예제 #1
0
static WRITE8_HANDLER(pcat_nit_rombank_w)
{
	logerror( "rom bank #%02x at PC=%08X\n", data, cpu_get_pc(space->cpu) );
	if ( data & 0x40 )
	{
		// rom bank
		memory_install_read_bank(space, 0x000d8000, 0x000dffff, 0, 0, "rombank" );
		memory_unmap_write(space, 0x000d8000, 0x000dffff, 0, 0);

		if ( data & 0x80 )
		{
			memory_set_bank(space->machine, "rombank", (data & 0x3f) | 0x40 );
		}
		else
		{
			memory_set_bank(space->machine, "rombank", data & 0x3f );
		}
	}
	else
	{
		// nvram bank
		memory_unmap_read(space, 0x000d8000, 0x000dffff, 0, 0);
		memory_unmap_write(space, 0x000d8000, 0x000dffff, 0, 0);

		memory_install_read_bank(space, 0x000d8000, 0x000d9fff, 0, 0, "nvrambank" );
		memory_install_write_bank(space, 0x000d8000, 0x000d9fff, 0, 0, "nvrambank" );

		memory_set_bankptr(space->machine, "nvrambank", space->machine->generic.nvram.u8);

	}
}
예제 #2
0
static DRIVER_INIT( ssf2mdb )
{
	memory_nop_write(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xA130F0, 0xA130FF, 0, 0); // custom banking is disabled (!)
	memory_install_read_bank(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x400000, 0x5fffff, 0, 0, "bank5");
	memory_unmap_write(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x400000, 0x5fffff, 0, 0);

	memory_set_bankptr(machine,  "bank5", machine->region( "maincpu" )->base() + 0x400000 );

	memory_install_read16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x770070, 0x770075, 0, 0, ssf2mdb_dsw_r );

	megadrive_6buttons_pad = 1;
	DRIVER_INIT_CALL(megadrij);
}
예제 #3
0
static WRITE8_DEVICE_HANDLER( arcadia_cia_0_porta_w )
{
	/* switch banks as appropriate */
	memory_set_bank(device->machine, "bank1", data & 1);

	/* swap the write handlers between ROM and bank 1 based on the bit */
	if ((data & 1) == 0)
		/* overlay disabled, map RAM on 0x000000 */
		memory_install_write_bank(cputag_get_address_space(device->machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x000000, 0x07ffff, 0, 0, "bank1");

	else
		/* overlay enabled, map Amiga system ROM on 0x000000 */
		memory_unmap_write(cputag_get_address_space(device->machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x000000, 0x07ffff, 0, 0);

	/* bit 2 = Power Led on Amiga */
	set_led_status(device->machine, 0, (data & 2) ? 0 : 1);
}