summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author David Haywood <mamehaze@users.noreply.github.com>2013-04-05 20:49:14 +0000
committer David Haywood <mamehaze@users.noreply.github.com>2013-04-05 20:49:14 +0000
commita8c425d5ad973e5ea013194a8dc9d0351f0a4905 (patch)
tree6886b80e66f3522349dbc1b25d5fe8cb97dfab73
parent1511ae08cebf8a8f75f93c702149a29f5699ffdc (diff)
start to modernize (nw)
-rw-r--r--src/emu/machine/amigafdc.c11
-rw-r--r--src/mame/audio/amiga.c3
-rw-r--r--src/mame/drivers/alg.c20
-rw-r--r--src/mame/drivers/arcadia.c7
-rw-r--r--src/mame/drivers/cd32.c5
-rw-r--r--src/mame/drivers/mquake.c7
-rw-r--r--src/mame/drivers/upscope.c7
-rw-r--r--src/mame/includes/amiga.h27
-rw-r--r--src/mame/machine/amiga.c21
-rw-r--r--src/mame/machine/cd32.c7
-rw-r--r--src/mame/video/amiga.c6
-rw-r--r--src/mess/drivers/amiga.c47
-rw-r--r--src/mess/machine/amigacd.c14
-rw-r--r--src/mess/machine/amigacrt.c54
14 files changed, 140 insertions, 96 deletions
diff --git a/src/emu/machine/amigafdc.c b/src/emu/machine/amigafdc.c
index e9baf06678c..6fa02409312 100644
--- a/src/emu/machine/amigafdc.c
+++ b/src/emu/machine/amigafdc.c
@@ -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;
diff --git a/src/mame/audio/amiga.c b/src/mame/audio/amiga.c
index bd86a110e7a..c8868757d8d 100644
--- a/src/mame/audio/amiga.c
+++ b/src/mame/audio/amiga.c
@@ -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);
}
diff --git a/src/mame/drivers/alg.c b/src/mame/drivers/alg.c
index 5a02fcc637f..c0ba0291180 100644
--- a/src/mame/drivers/alg.c
+++ b/src/mame/drivers/alg.c
@@ -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 */
diff --git a/src/mame/drivers/arcadia.c b/src/mame/drivers/arcadia.c
index 46bc16f30bd..3f737093bc2 100644
--- a/src/mame/drivers/arcadia.c
+++ b/src/mame/drivers/arcadia.c
@@ -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")
diff --git a/src/mame/drivers/cd32.c b/src/mame/drivers/cd32.c
index 9d3cb2d5dec..d44eb509580 100644
--- a/src/mame/drivers/cd32.c
+++ b/src/mame/drivers/cd32.c
@@ -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)
diff --git a/src/mame/drivers/mquake.c b/src/mame/drivers/mquake.c
index fe148ba8e8d..9653dd99be4 100644
--- a/src/mame/drivers/mquake.c
+++ b/src/mame/drivers/mquake.c
@@ -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")
diff --git a/src/mame/drivers/upscope.c b/src/mame/drivers/upscope.c
index fa737008499..075ee623542 100644
--- a/src/mame/drivers/upscope.c
+++ b/src/mame/drivers/upscope.c
@@ -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")
diff --git a/src/mame/includes/amiga.h b/src/mame/includes/amiga.h
index ce87511529d..0737f23e95f 100644
--- a/src/mame/includes/amiga.h
+++ b/src/mame/includes/amiga.h
@@ -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);
diff --git a/src/mame/machine/amiga.c b/src/mame/machine/amiga.c
index e0df50522c4..0294206085a 100644
--- a/src/mame/machine/amiga.c
+++ b/src/mame/machine/amiga.c
@@ -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;
diff --git a/src/mame/machine/cd32.c b/src/mame/machine/cd32.c
index cc6b96a0de6..36d4672619c 100644
--- a/src/mame/machine/cd32.c
+++ b/src/mame/machine/cd32.c
@@ -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);
}
}
diff --git a/src/mame/video/amiga.c b/src/mame/video/amiga.c
index 8801a58c247..6e0da7f271b 100644
--- a/src/mame/video/amiga.c
+++ b/src/mame/video/amiga.c
@@ -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
{
diff --git a/src/mess/drivers/amiga.c b/src/mess/drivers/amiga.c
index 2fae6128de1..03e8a518e02 100644
--- a/src/mess/drivers/amiga.c
+++ b/src/mess/drivers/amiga.c
@@ -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);
}
}
diff --git a/src/mess/machine/amigacd.c b/src/mess/machine/amigacd.c
index 7eea41761db..989426b8523 100644
--- a/src/mess/machine/amigacd.c
+++ b/src/mess/machine/amigacd.c
@@ -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
{
diff --git a/src/mess/machine/amigacrt.c b/src/mess/machine/amigacrt.c
index 171bb1562cf..8d0a011771a 100644
--- a/src/mess/machine/amigacrt.c
+++ b/src/mess/machine/amigacrt.c
@@ -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);
}
}
}