start to modernize (nw)

This commit is contained in:
David Haywood 2013-04-05 20:49:14 +00:00
parent 1511ae08ce
commit a8c425d5ad
14 changed files with 140 additions and 96 deletions

View File

@ -90,9 +90,10 @@ void amiga_fdc::device_reset()
void amiga_fdc::dma_done()
{
amiga_state *state = machine().driver_data<amiga_state>();
dma_state = DMA_IDLE;
address_space &space = machine().device("maincpu")->memory().space(AS_PROGRAM);
amiga_custom_w(space, REG_INTREQ, 0x8000 | INTENA_DSKBLK, 0xffff);
address_space &space = *state->m_maincpu_program_space;
state->amiga_custom_w(space, REG_INTREQ, 0x8000 | INTENA_DSKBLK, 0xffff);
}
void amiga_fdc::dma_write(UINT16 value)
@ -167,6 +168,8 @@ void amiga_fdc::live_abort()
void amiga_fdc::live_run(attotime limit)
{
amiga_state *state = machine().driver_data<amiga_state>();
if(cur_live.state == IDLE || cur_live.next_state != -1)
return;
@ -228,8 +231,8 @@ void amiga_fdc::live_run(attotime limit)
cur_live.bit_counter = 0;
}
dskbyt |= 0x1000;
address_space &space = machine().device("maincpu")->memory().space(AS_PROGRAM);
amiga_custom_w(space, REG_INTREQ, 0x8000 | INTENA_DSKSYN, 0xffff);
address_space &space = *state->m_maincpu_program_space;
state->amiga_custom_w(space, REG_INTREQ, 0x8000 | INTENA_DSKSYN, 0xffff);
} else
dskbyt &= ~0x1000;

View File

@ -76,7 +76,8 @@ INLINE amiga_audio *get_safe_token( device_t *device )
static TIMER_CALLBACK( signal_irq )
{
amiga_custom_w(machine.device("maincpu")->memory().space(AS_PROGRAM), REG_INTREQ, 0x8000 | (0x80 << param), 0xffff);
amiga_state *state = machine.driver_data<amiga_state>();
state->amiga_custom_w(*state->m_maincpu_program_space, REG_INTREQ, 0x8000 | (0x80 << param), 0xffff);
}

View File

@ -116,6 +116,8 @@ VIDEO_START_MEMBER(alg_state,alg)
MACHINE_START_MEMBER(alg_state,alg)
{
MACHINE_START_CALL_MEMBER(amiga);
m_serial_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(alg_state::response_timer),this));
m_serial_timer_active = FALSE;
}
@ -289,9 +291,9 @@ WRITE8_MEMBER(alg_state::alg_cia_1_porta_w)
static ADDRESS_MAP_START( main_map_r1, AS_PROGRAM, 16, alg_state )
ADDRESS_MAP_UNMAP_HIGH
AM_RANGE(0x000000, 0x07ffff) AM_RAMBANK("bank1") AM_SHARE("chip_ram")
AM_RANGE(0xbfd000, 0xbfefff) AM_READWRITE_LEGACY(amiga_cia_r, amiga_cia_w)
AM_RANGE(0xc00000, 0xdfffff) AM_READWRITE_LEGACY(amiga_custom_r, amiga_custom_w) AM_SHARE("custom_regs")
AM_RANGE(0xe80000, 0xe8ffff) AM_READWRITE_LEGACY(amiga_autoconfig_r, amiga_autoconfig_w)
AM_RANGE(0xbfd000, 0xbfefff) AM_READWRITE(amiga_cia_r, amiga_cia_w)
AM_RANGE(0xc00000, 0xdfffff) AM_READWRITE(amiga_custom_r, amiga_custom_w) AM_SHARE("custom_regs")
AM_RANGE(0xe80000, 0xe8ffff) AM_READWRITE(amiga_autoconfig_r, amiga_autoconfig_w)
AM_RANGE(0xfc0000, 0xffffff) AM_ROM AM_REGION("user1", 0) /* System ROM */
AM_RANGE(0xf00000, 0xf1ffff) AM_ROM AM_REGION("user2", 0) /* Custom ROM */
@ -302,9 +304,9 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( main_map_r2, AS_PROGRAM, 16, alg_state )
ADDRESS_MAP_UNMAP_HIGH
AM_RANGE(0x000000, 0x07ffff) AM_RAMBANK("bank1") AM_SHARE("chip_ram")
AM_RANGE(0xbfd000, 0xbfefff) AM_READWRITE_LEGACY(amiga_cia_r, amiga_cia_w)
AM_RANGE(0xc00000, 0xdfffff) AM_READWRITE_LEGACY(amiga_custom_r, amiga_custom_w) AM_SHARE("custom_regs")
AM_RANGE(0xe80000, 0xe8ffff) AM_READWRITE_LEGACY(amiga_autoconfig_r, amiga_autoconfig_w)
AM_RANGE(0xbfd000, 0xbfefff) AM_READWRITE(amiga_cia_r, amiga_cia_w)
AM_RANGE(0xc00000, 0xdfffff) AM_READWRITE(amiga_custom_r, amiga_custom_w) AM_SHARE("custom_regs")
AM_RANGE(0xe80000, 0xe8ffff) AM_READWRITE(amiga_autoconfig_r, amiga_autoconfig_w)
AM_RANGE(0xfc0000, 0xffffff) AM_ROM AM_REGION("user1", 0) /* System ROM */
AM_RANGE(0xf00000, 0xf3ffff) AM_ROM AM_REGION("user2", 0) /* Custom ROM */
@ -315,9 +317,9 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( main_map_picmatic, AS_PROGRAM, 16, alg_state )
ADDRESS_MAP_UNMAP_HIGH
AM_RANGE(0x000000, 0x07ffff) AM_RAMBANK("bank1") AM_SHARE("chip_ram")
AM_RANGE(0xbfd000, 0xbfefff) AM_READWRITE_LEGACY(amiga_cia_r, amiga_cia_w)
AM_RANGE(0xc00000, 0xdfffff) AM_READWRITE_LEGACY(amiga_custom_r, amiga_custom_w) AM_SHARE("custom_regs")
AM_RANGE(0xe80000, 0xe8ffff) AM_READWRITE_LEGACY(amiga_autoconfig_r, amiga_autoconfig_w)
AM_RANGE(0xbfd000, 0xbfefff) AM_READWRITE(amiga_cia_r, amiga_cia_w)
AM_RANGE(0xc00000, 0xdfffff) AM_READWRITE(amiga_custom_r, amiga_custom_w) AM_SHARE("custom_regs")
AM_RANGE(0xe80000, 0xe8ffff) AM_READWRITE(amiga_autoconfig_r, amiga_autoconfig_w)
AM_RANGE(0xfc0000, 0xffffff) AM_ROM AM_REGION("user1", 0) /* System ROM */
AM_RANGE(0xf00000, 0xf1ffff) AM_ROM AM_REGION("user2", 0) /* Custom ROM */

View File

@ -209,9 +209,9 @@ static void arcadia_reset_coins(running_machine &machine)
static ADDRESS_MAP_START( amiga_map, AS_PROGRAM, 16, arcadia_amiga_state )
ADDRESS_MAP_UNMAP_HIGH
AM_RANGE(0x000000, 0x07ffff) AM_RAMBANK("bank1") AM_SHARE("chip_ram")
AM_RANGE(0xbfd000, 0xbfefff) AM_READWRITE_LEGACY(amiga_cia_r, amiga_cia_w)
AM_RANGE(0xc00000, 0xdfffff) AM_READWRITE_LEGACY(amiga_custom_r, amiga_custom_w) AM_SHARE("custom_regs")
AM_RANGE(0xe80000, 0xe8ffff) AM_READWRITE_LEGACY(amiga_autoconfig_r, amiga_autoconfig_w)
AM_RANGE(0xbfd000, 0xbfefff) AM_READWRITE(amiga_cia_r, amiga_cia_w)
AM_RANGE(0xc00000, 0xdfffff) AM_READWRITE(amiga_custom_r, amiga_custom_w) AM_SHARE("custom_regs")
AM_RANGE(0xe80000, 0xe8ffff) AM_READWRITE(amiga_autoconfig_r, amiga_autoconfig_w)
AM_RANGE(0xf80000, 0xffffff) AM_ROM AM_REGION("user1", 0) /* Kickstart BIOS */
AM_RANGE(0x800000, 0x97ffff) AM_ROMBANK("bank2") AM_REGION("user3", 0)
@ -315,6 +315,7 @@ static MACHINE_CONFIG_START( arcadia, arcadia_amiga_state )
MCFG_CPU_ADD("maincpu", M68000, AMIGA_68000_NTSC_CLOCK)
MCFG_CPU_PROGRAM_MAP(amiga_map)
MCFG_MACHINE_START_OVERRIDE(amiga_state, amiga )
MCFG_MACHINE_RESET_OVERRIDE(arcadia_amiga_state,amiga)
MCFG_NVRAM_ADD_0FILL("nvram")

View File

@ -128,8 +128,8 @@ static ADDRESS_MAP_START( cd32_map, AS_PROGRAM, 32, cd32_state )
AM_RANGE(0x800010, 0x800013) AM_READ_PORT("DIPSW2")
AM_RANGE(0xb80000, 0xb8003f) AM_DEVREADWRITE_LEGACY("akiko", amiga_akiko32_r, amiga_akiko32_w)
AM_RANGE(0xbfa000, 0xbfa003) AM_WRITE(aga_overlay_w)
AM_RANGE(0xbfd000, 0xbfefff) AM_READWRITE16_LEGACY(amiga_cia_r, amiga_cia_w, 0xffffffff)
AM_RANGE(0xc00000, 0xdfffff) AM_READWRITE16_LEGACY(amiga_custom_r, amiga_custom_w, 0xffffffff) AM_SHARE("custom_regs")
AM_RANGE(0xbfd000, 0xbfefff) AM_READWRITE16(amiga_cia_r, amiga_cia_w, 0xffffffff)
AM_RANGE(0xc00000, 0xdfffff) AM_READWRITE16(amiga_custom_r, amiga_custom_w, 0xffffffff) AM_SHARE("custom_regs")
AM_RANGE(0xe00000, 0xe7ffff) AM_ROM AM_REGION("user1", 0x80000) /* CD32 Extended ROM */
AM_RANGE(0xa00000, 0xf7ffff) AM_NOP
AM_RANGE(0xf80000, 0xffffff) AM_ROM AM_REGION("user1", 0x0) /* Kickstart */
@ -782,6 +782,7 @@ static MACHINE_CONFIG_START( cd32base, cd32_state )
MCFG_CPU_PROGRAM_MAP(cd32_map)
MCFG_DEVICE_ADD("akiko", AKIKO, 0)
MCFG_MACHINE_START_OVERRIDE(amiga_state, amiga )
MCFG_MACHINE_RESET_OVERRIDE(amiga_state,amiga)
MCFG_I2CMEM_ADD("i2cmem",i2cmem_interface)

View File

@ -149,9 +149,9 @@ WRITE16_MEMBER(mquake_state::coin_chip_w)
static ADDRESS_MAP_START( main_map, AS_PROGRAM, 16, mquake_state )
ADDRESS_MAP_UNMAP_HIGH
AM_RANGE(0x000000, 0x07ffff) AM_RAMBANK("bank1") AM_SHARE("chip_ram")
AM_RANGE(0xbfd000, 0xbfefff) AM_READWRITE_LEGACY(amiga_cia_r, amiga_cia_w)
AM_RANGE(0xc00000, 0xdfffff) AM_READWRITE_LEGACY(amiga_custom_r, amiga_custom_w) AM_SHARE("custom_regs")
AM_RANGE(0xe80000, 0xe8ffff) AM_READWRITE_LEGACY(amiga_autoconfig_r, amiga_autoconfig_w)
AM_RANGE(0xbfd000, 0xbfefff) AM_READWRITE(amiga_cia_r, amiga_cia_w)
AM_RANGE(0xc00000, 0xdfffff) AM_READWRITE(amiga_custom_r, amiga_custom_w) AM_SHARE("custom_regs")
AM_RANGE(0xe80000, 0xe8ffff) AM_READWRITE(amiga_autoconfig_r, amiga_autoconfig_w)
AM_RANGE(0xfc0000, 0xffffff) AM_ROM AM_REGION("user1", 0) /* System ROM */
AM_RANGE(0x200000, 0x203fff) AM_RAM AM_SHARE("nvram")
@ -358,6 +358,7 @@ static MACHINE_CONFIG_START( mquake, mquake_state )
MCFG_CPU_ADD("maincpu", M68000, AMIGA_68000_NTSC_CLOCK)
MCFG_CPU_PROGRAM_MAP(main_map)
MCFG_MACHINE_START_OVERRIDE(amiga_state, amiga )
MCFG_MACHINE_RESET_OVERRIDE(mquake_state,mquake)
MCFG_NVRAM_ADD_0FILL("nvram")

View File

@ -246,9 +246,9 @@ WRITE8_MEMBER(upscope_state::upscope_cia_1_porta_w)
static ADDRESS_MAP_START( main_map, AS_PROGRAM, 16, upscope_state )
ADDRESS_MAP_UNMAP_HIGH
AM_RANGE(0x000000, 0x07ffff) AM_RAMBANK("bank1") AM_SHARE("chip_ram")
AM_RANGE(0xbfd000, 0xbfefff) AM_READWRITE_LEGACY(amiga_cia_r, amiga_cia_w)
AM_RANGE(0xc00000, 0xdfffff) AM_READWRITE_LEGACY(amiga_custom_r, amiga_custom_w) AM_SHARE("custom_regs")
AM_RANGE(0xe80000, 0xe8ffff) AM_READWRITE_LEGACY(amiga_autoconfig_r, amiga_autoconfig_w)
AM_RANGE(0xbfd000, 0xbfefff) AM_READWRITE(amiga_cia_r, amiga_cia_w)
AM_RANGE(0xc00000, 0xdfffff) AM_READWRITE(amiga_custom_r, amiga_custom_w) AM_SHARE("custom_regs")
AM_RANGE(0xe80000, 0xe8ffff) AM_READWRITE(amiga_autoconfig_r, amiga_autoconfig_w)
AM_RANGE(0xfc0000, 0xffffff) AM_ROM AM_REGION("user1", 0) /* System ROM */
AM_RANGE(0xf00000, 0xf7ffff) AM_ROM AM_REGION("user2", 0)
@ -313,6 +313,7 @@ static MACHINE_CONFIG_START( upscope, upscope_state )
MCFG_CPU_ADD("maincpu", M68000, AMIGA_68000_NTSC_CLOCK)
MCFG_CPU_PROGRAM_MAP(main_map)
MCFG_MACHINE_START_OVERRIDE(amiga_state, amiga )
MCFG_MACHINE_RESET_OVERRIDE(upscope_state,amiga)
MCFG_NVRAM_ADD_0FILL("nvram")

View File

@ -410,7 +410,7 @@ public:
optional_ioport m_p2joy_port;
optional_memory_bank m_bank1;
address_space* m_maincpu_program_space;
const amiga_machine_interface *m_intf;
autoconfig_device *m_autoconfig_list;
@ -462,6 +462,7 @@ public:
DECLARE_DRIVER_INIT(amiga);
DECLARE_DRIVER_INIT(cdtv);
DECLARE_DRIVER_INIT(a3000);
DECLARE_MACHINE_START(amiga);
DECLARE_MACHINE_RESET(amiga);
DECLARE_VIDEO_START(amiga);
DECLARE_PALETTE_INIT(amiga);
@ -474,6 +475,23 @@ public:
TIMER_CALLBACK_MEMBER(finish_serial_write);
DECLARE_WRITE_LINE_MEMBER(amiga_cia_0_irq);
DECLARE_WRITE_LINE_MEMBER(amiga_cia_1_irq);
DECLARE_READ16_MEMBER( amiga_custom_r );
DECLARE_WRITE16_MEMBER( amiga_custom_w );
DECLARE_READ16_MEMBER( amiga_autoconfig_r );
DECLARE_WRITE16_MEMBER( amiga_autoconfig_w );
DECLARE_READ16_MEMBER( amiga_cia_r );
DECLARE_WRITE16_MEMBER( amiga_cia_w );
// action replay
DECLARE_READ16_MEMBER( amiga_ar23_cia_r );
DECLARE_READ16_MEMBER( amiga_ar23_mode_r );
DECLARE_WRITE16_MEMBER( amiga_ar23_mode_w );
void amiga_ar23_init( running_machine &machine, int ar3 );
};
@ -487,18 +505,13 @@ void amiga_machine_config(running_machine &machine, const amiga_machine_interfac
DECLARE_READ16_HANDLER( amiga_cia_r );
DECLARE_WRITE16_HANDLER( amiga_cia_w );
DECLARE_READ16_HANDLER( amiga_custom_r );
DECLARE_WRITE16_HANDLER( amiga_custom_w );
void amiga_serial_in_w(running_machine &machine, UINT16 data);
attotime amiga_get_serial_char_period(running_machine &machine);
void amiga_add_autoconfig(running_machine &machine, const amiga_autoconfig_device *device);
DECLARE_READ16_HANDLER( amiga_autoconfig_r );
DECLARE_WRITE16_HANDLER( amiga_autoconfig_w );
const amiga_machine_interface *amiga_get_interface(running_machine &machine);

View File

@ -277,13 +277,18 @@ static void amiga_m68k_reset(device_t *device)
}
else
{
amiga_cia_w(space, 0x1001/2, 1, 0xffff);
state->amiga_cia_w(space, 0x1001/2, 1, 0xffff);
}
}
MACHINE_START_MEMBER(amiga_state,amiga)
{
m_maincpu_program_space = &machine().device("maincpu")->memory().space(AS_PROGRAM);
}
MACHINE_RESET_MEMBER(amiga_state,amiga)
{
/* set m68k reset function */
m68k_set_reset_callback(m_maincpu, amiga_m68k_reset);
@ -1015,7 +1020,7 @@ static void blitter_setup(address_space &space)
*
*************************************/
READ16_HANDLER( amiga_cia_r )
READ16_MEMBER( amiga_state::amiga_cia_r )
{
amiga_state *state = space.machine().driver_data<amiga_state>();
UINT8 data;
@ -1053,7 +1058,7 @@ READ16_HANDLER( amiga_cia_r )
*
*************************************/
WRITE16_HANDLER( amiga_cia_w )
WRITE16_HANDLER( amiga_state::amiga_cia_w )
{
amiga_state *state = space.machine().driver_data<amiga_state>();
device_t *cia;
@ -1149,7 +1154,7 @@ static void custom_reset(running_machine &machine)
*
*************************************/
READ16_HANDLER( amiga_custom_r )
READ16_MEMBER( amiga_state::amiga_custom_r )
{
amiga_state *state = space.machine().driver_data<amiga_state>();
UINT16 temp;
@ -1269,7 +1274,7 @@ TIMER_CALLBACK_MEMBER(amiga_state::finish_serial_write)
}
WRITE16_HANDLER( amiga_custom_w )
WRITE16_MEMBER( amiga_state::amiga_custom_w )
{
amiga_state *state = space.machine().driver_data<amiga_state>();
UINT16 temp;
@ -1540,7 +1545,7 @@ void amiga_serial_in_w(running_machine &machine, UINT16 data)
}
/* signal an interrupt */
amiga_custom_w(space, REG_INTREQ, 0x8000 | INTENA_RBF, 0xffff);
state->amiga_custom_w(space, REG_INTREQ, 0x8000 | INTENA_RBF, 0xffff);
}
@ -1614,7 +1619,7 @@ static void autoconfig_reset(running_machine &machine)
*
*************************************/
READ16_HANDLER( amiga_autoconfig_r )
READ16_MEMBER( amiga_state::amiga_autoconfig_r )
{
amiga_state *state = space.machine().driver_data<amiga_state>();
autoconfig_device *cur_autoconfig = state->m_cur_autoconfig;
@ -1753,7 +1758,7 @@ READ16_HANDLER( amiga_autoconfig_r )
*
*************************************/
WRITE16_HANDLER( amiga_autoconfig_w )
WRITE16_MEMBER( amiga_state::amiga_autoconfig_w )
{
amiga_state *state = space.machine().driver_data<amiga_state>();
autoconfig_device *cur_autoconfig = state->m_cur_autoconfig;

View File

@ -99,8 +99,10 @@ static DEVICE_STOP( akiko )
static DEVICE_RESET( akiko )
{
amiga_state *amiga = device->machine().driver_data<amiga_state>();
running_machine &machine = device->machine();
akiko_state *state = get_safe_token(device);
state->m_space = amiga->m_maincpu_program_space;
cdrom_image_device *cddevice = machine.device<cdrom_image_device>("cdrom");
if (cddevice!=NULL)
@ -174,7 +176,6 @@ static DEVICE_START( akiko )
akiko_state *state = get_safe_token(device);
state->set_machine(machine);
state->m_space = &machine.device("maincpu")->memory().space(AS_PROGRAM);
state->m_c2p_input_index = 0;
state->m_c2p_output_index = 0;
@ -394,12 +395,14 @@ static UINT8 akiko_cdda_getstatus(akiko_state *state, UINT32 *lba)
static void akiko_set_cd_status(akiko_state *state, UINT32 status)
{
amiga_state *amiga = state->machine().driver_data<amiga_state>();
state->m_cdrom_status[0] |= status;
if ( state->m_cdrom_status[0] & state->m_cdrom_status[1] )
{
if (LOG_AKIKO_CD) logerror( "Akiko CD IRQ\n" );
amiga_custom_w(*state->m_space, REG_INTREQ, 0x8000 | INTENA_PORTS, 0xffff);
amiga->amiga_custom_w(*state->m_space, REG_INTREQ, 0x8000 | INTENA_PORTS, 0xffff);
}
}

View File

@ -206,10 +206,10 @@ int amiga_copper_execute_next(running_machine &machine, int xpos)
{
if (LOG_COPPER)
logerror("%02X.%02X: Write to %s = %04x\n", state->m_last_scanline, xpos / 2, amiga_custom_names[state->m_copper_pending_offset & 0xff], state->m_copper_pending_data);
amiga_custom_w(machine.device("maincpu")->memory().space(AS_PROGRAM), state->m_copper_pending_offset, state->m_copper_pending_data, 0xffff);
state->amiga_custom_w(*state->m_maincpu_program_space, state->m_copper_pending_offset, state->m_copper_pending_data, 0xffff);
state->m_copper_pending_offset = 0;
}
/* if we're waiting, check for a breakthrough */
if (state->m_copper_waiting)
{
@ -262,7 +262,7 @@ int amiga_copper_execute_next(running_machine &machine, int xpos)
{
if (LOG_COPPER)
logerror("%02X.%02X: Write to %s = %04x\n", state->m_last_scanline, xpos / 2, amiga_custom_names[word0 & 0xff], word1);
amiga_custom_w(machine.device("maincpu")->memory().space(AS_PROGRAM), word0, word1, 0xffff);
state->amiga_custom_w(*state->m_maincpu_program_space, word0, word1, 0xffff);
}
else // additional 2 cycles needed for non-Agnus registers
{

View File

@ -164,11 +164,11 @@ static const centronics_interface amiga_centronics_config =
static ADDRESS_MAP_START(amiga_mem, AS_PROGRAM, 16, amiga_state )
ADDRESS_MAP_UNMAP_HIGH
AM_RANGE(0x000000, 0x07ffff) AM_MIRROR(0x80000) AM_RAMBANK("bank1") AM_SHARE("chip_ram")
AM_RANGE(0xbfd000, 0xbfefff) AM_READWRITE_LEGACY(amiga_cia_r, amiga_cia_w)
AM_RANGE(0xbfd000, 0xbfefff) AM_READWRITE(amiga_cia_r, amiga_cia_w)
AM_RANGE(0xc00000, 0xc7ffff) AM_RAM /* slow-mem */
AM_RANGE(0xc80000, 0xcfffff) AM_READWRITE_LEGACY(amiga_custom_r, amiga_custom_w) /* see Note 1 above */
AM_RANGE(0xdf0000, 0xdfffff) AM_READWRITE_LEGACY(amiga_custom_r, amiga_custom_w) AM_SHARE("custom_regs") /* Custom Chips */
AM_RANGE(0xe80000, 0xe8ffff) AM_READWRITE_LEGACY(amiga_autoconfig_r, amiga_autoconfig_w)
AM_RANGE(0xc80000, 0xcfffff) AM_READWRITE(amiga_custom_r, amiga_custom_w) /* see Note 1 above */
AM_RANGE(0xdf0000, 0xdfffff) AM_READWRITE(amiga_custom_r, amiga_custom_w) AM_SHARE("custom_regs") /* Custom Chips */
AM_RANGE(0xe80000, 0xe8ffff) AM_READWRITE(amiga_autoconfig_r, amiga_autoconfig_w)
AM_RANGE(0xf80000, 0xffffff) AM_ROM AM_REGION("user1", 0) /* System ROM - mirror */
ADDRESS_MAP_END
@ -176,9 +176,9 @@ static ADDRESS_MAP_START( a1200_map, AS_PROGRAM, 32, a1200_state )
ADDRESS_MAP_UNMAP_HIGH
AM_RANGE(0x000000, 0x1fffff) AM_RAMBANK("bank1") AM_SHARE("chip_ram")
AM_RANGE(0xbfa000, 0xbfa003) AM_WRITE(aga_overlay_w)
AM_RANGE(0xbfd000, 0xbfefff) AM_READWRITE16_LEGACY(amiga_cia_r, amiga_cia_w, 0xffffffff)
AM_RANGE(0xc00000, 0xdfffff) AM_READWRITE16_LEGACY(amiga_custom_r, amiga_custom_w, 0xffffffff) AM_SHARE("custom_regs")
AM_RANGE(0xe80000, 0xe8ffff) AM_READWRITE16_LEGACY(amiga_autoconfig_r, amiga_autoconfig_w, 0xffffffff)
AM_RANGE(0xbfd000, 0xbfefff) AM_READWRITE16(amiga_cia_r, amiga_cia_w, 0xffffffff)
AM_RANGE(0xc00000, 0xdfffff) AM_READWRITE16(amiga_custom_r, amiga_custom_w, 0xffffffff) AM_SHARE("custom_regs")
AM_RANGE(0xe80000, 0xe8ffff) AM_READWRITE16(amiga_autoconfig_r, amiga_autoconfig_w, 0xffffffff)
AM_RANGE(0xf80000, 0xffffff) AM_ROM AM_REGION("user1", 0) /* Kickstart */
ADDRESS_MAP_END
@ -186,9 +186,9 @@ static ADDRESS_MAP_START( amiga_mem32, AS_PROGRAM, 32, a1200_state )
ADDRESS_MAP_UNMAP_HIGH
// ADDRESS_MAP_GLOBAL_MASK(0xffffff) // not sure
AM_RANGE(0x000000, 0x1fffff) AM_RAMBANK("bank1") AM_SHARE("chip_ram")
AM_RANGE(0xbfd000, 0xbfefff) AM_READWRITE16_LEGACY(amiga_cia_r, amiga_cia_w, 0xffffffff)
AM_RANGE(0xc00000, 0xdfffff) AM_READWRITE16_LEGACY(amiga_custom_r, amiga_custom_w, 0xffffffff) AM_SHARE("custom_regs")
AM_RANGE(0xe80000, 0xe8ffff) AM_READWRITE16_LEGACY(amiga_autoconfig_r, amiga_autoconfig_w, 0xffffffff)
AM_RANGE(0xbfd000, 0xbfefff) AM_READWRITE16(amiga_cia_r, amiga_cia_w, 0xffffffff)
AM_RANGE(0xc00000, 0xdfffff) AM_READWRITE16(amiga_custom_r, amiga_custom_w, 0xffffffff) AM_SHARE("custom_regs")
AM_RANGE(0xe80000, 0xe8ffff) AM_READWRITE16(amiga_autoconfig_r, amiga_autoconfig_w, 0xffffffff)
AM_RANGE(0xf80000, 0xffffff) AM_ROM AM_REGION("user1", 0) /* Kickstart */
ADDRESS_MAP_END
@ -238,11 +238,11 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START(cdtv_mem, AS_PROGRAM, 16, amiga_state )
AM_RANGE(0x000000, 0x0fffff) AM_RAMBANK("bank1") AM_SHARE("chip_ram")
AM_RANGE(0xbfd000, 0xbfefff) AM_READWRITE_LEGACY(amiga_cia_r, amiga_cia_w)
AM_RANGE(0xbfd000, 0xbfefff) AM_READWRITE(amiga_cia_r, amiga_cia_w)
AM_RANGE(0xdc0000, 0xdc003f) AM_READWRITE_LEGACY(amiga_clock_r, amiga_clock_w)
AM_RANGE(0xdc8000, 0xdc87ff) AM_RAM AM_SHARE("nvram")
AM_RANGE(0xdf0000, 0xdfffff) AM_READWRITE_LEGACY(amiga_custom_r, amiga_custom_w) AM_SHARE("custom_regs") /* Custom Chips */
AM_RANGE(0xe80000, 0xe8ffff) AM_READWRITE_LEGACY(amiga_autoconfig_r, amiga_autoconfig_w)
AM_RANGE(0xdf0000, 0xdfffff) AM_READWRITE(amiga_custom_r, amiga_custom_w) AM_SHARE("custom_regs") /* Custom Chips */
AM_RANGE(0xe80000, 0xe8ffff) AM_READWRITE(amiga_autoconfig_r, amiga_autoconfig_w)
AM_RANGE(0xf00000, 0xffffff) AM_ROM AM_REGION("user1", 0) /* CDTV & System ROM */
ADDRESS_MAP_END
@ -266,10 +266,10 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START(a1000_mem, AS_PROGRAM, 16, amiga_state )
AM_RANGE(0x000000, 0x03ffff) AM_MIRROR(0xc0000) AM_RAMBANK("bank1") AM_SHARE("chip_ram")
AM_RANGE(0xbfd000, 0xbfefff) AM_READWRITE_LEGACY(amiga_cia_r, amiga_cia_w)
AM_RANGE(0xc00000, 0xc3ffff) AM_READWRITE_LEGACY(amiga_custom_r, amiga_custom_w) /* See Note 1 above */
AM_RANGE(0xdf0000, 0xdfffff) AM_READWRITE_LEGACY(amiga_custom_r, amiga_custom_w) AM_SHARE("custom_regs") /* Custom Chips */
AM_RANGE(0xe80000, 0xe8ffff) AM_READWRITE_LEGACY(amiga_autoconfig_r, amiga_autoconfig_w)
AM_RANGE(0xbfd000, 0xbfefff) AM_READWRITE(amiga_cia_r, amiga_cia_w)
AM_RANGE(0xc00000, 0xc3ffff) AM_READWRITE(amiga_custom_r, amiga_custom_w) /* See Note 1 above */
AM_RANGE(0xdf0000, 0xdfffff) AM_READWRITE(amiga_custom_r, amiga_custom_w) AM_SHARE("custom_regs") /* Custom Chips */
AM_RANGE(0xe80000, 0xe8ffff) AM_READWRITE(amiga_autoconfig_r, amiga_autoconfig_w)
AM_RANGE(0xf80000, 0xfbffff) AM_ROM AM_REGION("user1", 0) /* Bootstrap ROM */
AM_RANGE(0xfc0000, 0xffffff) AM_RAMBANK("bank2") /* Writable Control Store RAM */
ADDRESS_MAP_END
@ -494,6 +494,7 @@ WRITE8_MEMBER(a1200_state::ami1200_cia_0_portb_w)
MACHINE_START_MEMBER(cdtv_state,cdtv)
{
MACHINE_START_CALL_MEMBER(amiga);
MACHINE_START_CALL_LEGACY( amigacd );
}
@ -641,6 +642,7 @@ static MACHINE_CONFIG_START( ntsc, amiga_state )
// MCFG_SCREEN_REFRESH_RATE(59.997)
// MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_MACHINE_START_OVERRIDE(amiga_state, amiga )
MCFG_MACHINE_RESET_OVERRIDE(amiga_state, amiga )
MCFG_DEFAULT_LAYOUT(layout_amiga)
@ -835,6 +837,7 @@ static MACHINE_CONFIG_START( a1200n, a1200_state )
MCFG_CPU_PROGRAM_MAP(keyboard_mem)
MCFG_DEVICE_DISABLE()
MCFG_MACHINE_START_OVERRIDE(amiga_state, amiga )
MCFG_MACHINE_RESET_OVERRIDE(amiga_state, amiga )
/* TODO: params */
@ -941,6 +944,7 @@ static MACHINE_CONFIG_START( a3000n, amiga_state )
MCFG_SCREEN_REFRESH_RATE(59.997)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_MACHINE_START_OVERRIDE(amiga_state, amiga )
MCFG_MACHINE_RESET_OVERRIDE(amiga_state, amiga )
MCFG_DEFAULT_LAYOUT(layout_amiga)
@ -1044,7 +1048,7 @@ static WRITE8_DEVICE_HANDLER( amiga_cia_0_portA_w )
}
/* overlay disabled, map RAM on 0x000000 */
space.machine().device("maincpu")->memory().space(AS_PROGRAM).install_write_bank(0x000000, state->m_chip_ram.bytes() - 1, 0, mirror_mask, "bank1");
state->m_maincpu_program_space->install_write_bank(0x000000, state->m_chip_ram.bytes() - 1, 0, mirror_mask, "bank1");
/* if there is a cart region, check for cart overlay */
if (space.machine().root_device().memregion("user2")->base() != NULL)
@ -1052,7 +1056,7 @@ static WRITE8_DEVICE_HANDLER( amiga_cia_0_portA_w )
}
else
/* overlay enabled, map Amiga system ROM on 0x000000 */
space.machine().device("maincpu")->memory().space(AS_PROGRAM).unmap_write(0x000000, state->m_chip_ram.bytes() - 1);
state->m_maincpu_program_space->unmap_write(0x000000, state->m_chip_ram.bytes() - 1);
set_led_status( space.machine(), 0, ( data & 2 ) ? 0 : 1 ); /* bit 2 = Power Led on Amiga */
output_set_value("power_led", ( data & 2 ) ? 0 : 1);
@ -1088,15 +1092,16 @@ static UINT16 amiga_read_joy1dat(running_machine &machine)
static void amiga_reset(running_machine &machine)
{
amiga_state *state = machine.driver_data<amiga_state>();
if (machine.root_device().ioport("hardware")->read() & 0x08)
{
/* Install RTC */
machine.device("maincpu")->memory().space(AS_PROGRAM).install_legacy_readwrite_handler(0xdc0000, 0xdc003f, FUNC(amiga_clock_r), FUNC(amiga_clock_w));
state->m_maincpu_program_space->install_legacy_readwrite_handler(0xdc0000, 0xdc003f, FUNC(amiga_clock_r), FUNC(amiga_clock_w));
}
else
{
/* No RTC support */
machine.device("maincpu")->memory().space(AS_PROGRAM).unmap_readwrite(0xdc0000, 0xdc003f);
state->m_maincpu_program_space->unmap_readwrite(0xdc0000, 0xdc003f);
}
}

View File

@ -73,6 +73,8 @@ static dmac_data_t dmac_data;
static void check_interrupts( running_machine &machine )
{
amiga_state *state = machine.driver_data<amiga_state>();
/* if interrupts are disabled, bail */
if ( (dmac_data.cntr & CNTR_INTEN) == 0 )
return;
@ -82,7 +84,7 @@ static void check_interrupts( running_machine &machine )
return;
/* otherwise, generate the IRQ */
amiga_custom_w(machine.device("maincpu")->memory().space(AS_PROGRAM), REG_INTREQ, 0x8000 | INTENA_PORTS, 0xffff);
state->amiga_custom_w(*state->m_maincpu_program_space, REG_INTREQ, 0x8000 | INTENA_PORTS, 0xffff);
}
static TIMER_CALLBACK(dmac_dma_proc)
@ -389,14 +391,16 @@ static WRITE16_HANDLER( amiga_dmac_w )
static void dmac_install(running_machine &machine, offs_t base)
{
address_space &space = machine.device("maincpu")->memory().space(AS_PROGRAM);
amiga_state *state = machine.driver_data<amiga_state>();
address_space &space = *state->m_maincpu_program_space;
space.install_legacy_read_handler(base, base + 0xFFFF, FUNC(amiga_dmac_r));
space.install_legacy_write_handler(base, base + 0xFFFF, FUNC(amiga_dmac_w));
}
static void dmac_uninstall(running_machine &machine, offs_t base)
{
address_space &space = machine.device("maincpu")->memory().space(AS_PROGRAM);
amiga_state *state = machine.driver_data<amiga_state>();
address_space &space = *state->m_maincpu_program_space;
space.unmap_readwrite(base, base + 0xFFFF);
}
@ -457,7 +461,7 @@ static TIMER_CALLBACK(tp6525_delayed_irq)
if ( (CUSTOM_REG(REG_INTREQ) & INTENA_PORTS) == 0 )
{
amiga_custom_w(machine.device("maincpu")->memory().space(AS_PROGRAM), REG_INTREQ, 0x8000 | INTENA_PORTS, 0xffff);
state->amiga_custom_w(*state->m_maincpu_program_space, REG_INTREQ, 0x8000 | INTENA_PORTS, 0xffff);
}
else
{
@ -474,7 +478,7 @@ static void amigacd_tpi6525_irq_trampoline(device_t *device, int level)
{
if ( (CUSTOM_REG(REG_INTREQ) & INTENA_PORTS) == 0 )
{
amiga_custom_w(device->machine().device("maincpu")->memory().space(AS_PROGRAM), REG_INTREQ, 0x8000 | INTENA_PORTS, 0xffff);
state->amiga_custom_w(*state->m_maincpu_program_space, REG_INTREQ, 0x8000 | INTENA_PORTS, 0xffff);
}
else
{

View File

@ -94,7 +94,7 @@ static void amiga_ar1_nmi( running_machine &machine )
{
amiga_state *state = machine.driver_data<amiga_state>();
/* get the cart's built-in ram */
UINT16 *ar_ram = (UINT16 *)machine.device("maincpu")->memory().space(AS_PROGRAM).get_write_ptr(0x9fc000);
UINT16 *ar_ram = (UINT16 *)(state->m_maincpu_program_space->get_write_ptr(0x9fc000));
if ( ar_ram != NULL )
{
@ -133,7 +133,9 @@ static WRITE16_HANDLER( amiga_ar1_chipmem_w )
static void amiga_ar1_check_overlay( running_machine &machine )
{
machine.device("maincpu")->memory().space(AS_PROGRAM).install_legacy_write_handler(0x000000, 0x00007f, FUNC(amiga_ar1_chipmem_w));
amiga_state *state = machine.driver_data<amiga_state>();
state->m_maincpu_program_space->install_legacy_write_handler(0x000000, 0x00007f, FUNC(amiga_ar1_chipmem_w));
}
static void amiga_ar1_init( running_machine &machine )
@ -153,11 +155,11 @@ static void amiga_ar1_init( running_machine &machine )
memset(ar_ram, 0, 0x4000);
/* Install ROM */
machine.device("maincpu")->memory().space(AS_PROGRAM).install_read_bank(0xf00000, 0xf7ffff, "bank2");
machine.device("maincpu")->memory().space(AS_PROGRAM).unmap_write(0xf00000, 0xf7ffff);
state->m_maincpu_program_space->install_read_bank(0xf00000, 0xf7ffff, "bank2");
state->m_maincpu_program_space->unmap_write(0xf00000, 0xf7ffff);
/* Install RAM */
machine.device("maincpu")->memory().space(AS_PROGRAM).install_readwrite_bank(0x9fc000, 0x9fffff, "bank3");
state->m_maincpu_program_space->install_readwrite_bank(0x9fc000, 0x9fffff, "bank3");
/* Configure Banks */
state->membank("bank2")->set_base(machine.root_device().memregion("user2")->base());
@ -190,7 +192,7 @@ static void amiga_ar1_init( running_machine &machine )
static void amiga_ar23_freeze( running_machine &machine );
static READ16_HANDLER( amiga_ar23_cia_r )
READ16_MEMBER( amiga_state::amiga_ar23_cia_r )
{
int pc = space.device().safe_pc();
@ -202,15 +204,15 @@ static READ16_HANDLER( amiga_ar23_cia_r )
return amiga_cia_r( space, offset, mem_mask );
}
static WRITE16_HANDLER( amiga_ar23_mode_w )
WRITE16_MEMBER( amiga_state::amiga_ar23_mode_w )
{
if ( data & 2 )
{
space.install_legacy_read_handler(0xbfd000, 0xbfefff, FUNC(amiga_ar23_cia_r));
space.install_read_handler(0xbfd000, 0xbfefff, read16_delegate(FUNC(amiga_state::amiga_ar23_cia_r), this));
}
else
{
space.install_legacy_read_handler(0xbfd000, 0xbfefff, FUNC(amiga_cia_r));
space.install_read_handler(0xbfd000, 0xbfefff, read16_delegate(FUNC(amiga_state::amiga_cia_r), this));
}
amigacrt.ar23_mode = (data&0x3);
@ -219,7 +221,7 @@ static WRITE16_HANDLER( amiga_ar23_mode_w )
}
static READ16_HANDLER( amiga_ar23_mode_r )
READ16_MEMBER( amiga_state::amiga_ar23_mode_r )
{
amiga_state *state = space.machine().driver_data<amiga_state>();
UINT16 *mem = (UINT16 *)(*state->memregion( "user2" ));
@ -229,7 +231,7 @@ static READ16_HANDLER( amiga_ar23_mode_r )
if ( offset < 2 )
return (mem[offset] | (amigacrt.ar23_mode&3));
if ( offset == 0x03 ) /* disable cart oberlay on chip mem */
if ( offset == 0x03 ) /* disable cart overlay on chip mem */
{
UINT32 mirror_mask = state->m_chip_ram.bytes();
@ -269,7 +271,7 @@ static void amiga_ar23_freeze( running_machine &machine )
if ( ((pc >> 16) & 0xfe ) != 0x40 )
{
/* get the cart's built-in ram */
UINT16 *ar_ram = (UINT16 *)machine.device("maincpu")->memory().space(AS_PROGRAM).get_write_ptr(0x440000);
UINT16 *ar_ram = (UINT16 *)state->m_maincpu_program_space->get_write_ptr(0x440000);
if ( ar_ram != NULL )
{
@ -283,7 +285,7 @@ static void amiga_ar23_freeze( running_machine &machine )
state->membank("bank1")->set_entry(2);
/* writes go to chipram */
machine.device("maincpu")->memory().space(AS_PROGRAM).install_legacy_write_handler(0x000000, state->m_chip_ram.bytes() - 1, FUNC(amiga_ar23_chipmem_w));
state->m_maincpu_program_space->install_legacy_write_handler(0x000000, state->m_chip_ram.bytes() - 1, FUNC(amiga_ar23_chipmem_w));
/* trigger NMI irq */
machine.device("maincpu")->execute().set_input_line(7, PULSE_LINE);
@ -340,11 +342,12 @@ static READ16_HANDLER( amiga_ar23_custom_r )
static void amiga_ar23_check_overlay( running_machine &machine )
{
amiga_state *state = machine.driver_data<amiga_state>();
amigacrt.ar23_mode = 3;
machine.device("maincpu")->memory().space(AS_PROGRAM).install_legacy_write_handler(0x000000, 0x00000f, FUNC(amiga_ar23_chipmem_w));
state->m_maincpu_program_space->install_legacy_write_handler(0x000000, 0x00000f, FUNC(amiga_ar23_chipmem_w));
}
static void amiga_ar23_init( running_machine &machine, int ar3 )
void amiga_state::amiga_ar23_init( running_machine &machine, int ar3 )
{
amiga_state *state = machine.driver_data<amiga_state>();
UINT32 mirror = 0x20000, size = 0x1ffff;
@ -367,20 +370,20 @@ static void amiga_ar23_init( running_machine &machine, int ar3 )
}
/* Install ROM */
machine.device("maincpu")->memory().space(AS_PROGRAM).install_read_bank(0x400000, 0x400000+size, 0, mirror, "bank2");
machine.device("maincpu")->memory().space(AS_PROGRAM).unmap_write(0x400000, 0x400000+size, 0, mirror);
state->m_maincpu_program_space->install_read_bank(0x400000, 0x400000+size, 0, mirror, "bank2");
state->m_maincpu_program_space->unmap_write(0x400000, 0x400000+size, 0, mirror);
/* Install RAM */
machine.device("maincpu")->memory().space(AS_PROGRAM).install_read_bank(0x440000, 0x44ffff, "bank3");
machine.device("maincpu")->memory().space(AS_PROGRAM).install_write_bank(0x440000, 0x44ffff, "bank3");
state->m_maincpu_program_space->install_read_bank(0x440000, 0x44ffff, "bank3");
state->m_maincpu_program_space->install_write_bank(0x440000, 0x44ffff, "bank3");
/* Install Custom chip monitor */
// machine.device("maincpu")->memory().space(AS_PROGRAM).install_legacy_read_handler(0xdff000, 0xdff1ff, FUNC(amiga_ar23_custom_r));
// machine.device("maincpu")->memory().space(AS_PROGRAM).install_legacy_write_handler(0xdff000, 0xdff1ff, FUNC(amiga_ar23_custom_w));
// state->m_maincpu_program_space->install_legacy_read_handler(0xdff000, 0xdff1ff, FUNC(amiga_ar23_custom_r));
// state->m_maincpu_program_space->install_legacy_write_handler(0xdff000, 0xdff1ff, FUNC(amiga_ar23_custom_w));
/* Install status/mode handlers */
machine.device("maincpu")->memory().space(AS_PROGRAM).install_legacy_read_handler(0x400000, 0x400007, 0, mirror, FUNC(amiga_ar23_mode_r));
machine.device("maincpu")->memory().space(AS_PROGRAM).install_legacy_write_handler(0x400000, 0x400003, 0, mirror, FUNC(amiga_ar23_mode_w));
state->m_maincpu_program_space->install_read_handler( 0x400000, 0x400007, 0, mirror, read16_delegate( FUNC(amiga_state::amiga_ar23_mode_r), this));
state->m_maincpu_program_space->install_write_handler(0x400000, 0x400003, 0, mirror, write16_delegate(FUNC(amiga_state::amiga_ar23_mode_w), this));
/* Configure Banks */
state->membank("bank2")->set_base(machine.root_device().memregion("user2")->base());
@ -403,6 +406,7 @@ void amiga_cart_init( running_machine &machine )
{
/* see what is there */
UINT16 *mem = (UINT16 *)(*machine.root_device().memregion( "user2" ));
amiga_state *state = machine.driver_data<amiga_state>();
amigacrt.cart_type = -1;
@ -416,12 +420,12 @@ void amiga_cart_init( running_machine &machine )
else if ( mem[0x0C] == 0x4D6B )
{
amigacrt.cart_type = ACTION_REPLAY_MKII;
amiga_ar23_init(machine, 0);
state->amiga_ar23_init(machine, 0);
}
else if ( mem[0x0C] == 0x4D4B )
{
amigacrt.cart_type = ACTION_REPLAY_MKIII;
amiga_ar23_init(machine, 1);
state->amiga_ar23_init(machine, 1);
}
}
}