mirror of
https://github.com/holub/mame
synced 2025-04-25 09:50:04 +03:00
start to modernize (nw)
This commit is contained in:
parent
1511ae08ce
commit
a8c425d5ad
@ -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;
|
||||
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
|
||||
|
@ -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 */
|
||||
|
@ -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")
|
||||
|
||||
|
@ -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)
|
||||
|
@ -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")
|
||||
|
||||
|
@ -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")
|
||||
|
||||
|
@ -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);
|
||||
|
||||
|
@ -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;
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -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
|
||||
{
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -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
|
||||
{
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user