Example #1
0
static DRIVER_INIT( esb )
{
	/* init the slapstic */
	slapstic_init(101);
	slapstic_source = &memory_region(REGION_CPU1)[0x14000];
	slapstic_base = &memory_region(REGION_CPU1)[0x08000];

	/* install an opcode base handler */
	memory_set_opbase_handler(0, esb_setopbase);

	/* install read/write handlers for it */
	memory_install_read8_handler(0, ADDRESS_SPACE_PROGRAM, 0x8000, 0x9fff, 0, 0, esb_slapstic_r);
	memory_install_write8_handler(0, ADDRESS_SPACE_PROGRAM, 0x8000, 0x9fff, 0, 0, esb_slapstic_w);

	/* install additional banking */
	memory_install_read8_handler(0, ADDRESS_SPACE_PROGRAM, 0xa000, 0xffff, 0, 0, MRA8_BANK2);

	/* prepare the mathbox */
	starwars_is_esb = 1;
	swmathbox_init();

	/* initialize banking */
	memory_configure_bank(1, 0, 2, memory_region(REGION_CPU1) + 0x6000, 0x10000 - 0x6000);
	memory_set_bank(1, 0);
	memory_configure_bank(2, 0, 2, memory_region(REGION_CPU1) + 0xa000, 0x1c000 - 0xa000);
	memory_set_bank(2, 0);
}
Example #2
0
void e01_state::machine_start()
{
	UINT8 *ram = ram_get_ptr(m_ram);
	UINT8 *rom = machine().region(R65C102_TAG)->base();

	/* setup memory banking */
	memory_configure_bank(machine(), "bank1", 0, 1, ram, 0);
	memory_configure_bank(machine(), "bank1", 1, 1, rom, 0);
	memory_set_bank(machine(), "bank1", 1);

	memory_configure_bank(machine(), "bank2", 0, 1, ram, 0);
	memory_set_bank(machine(), "bank2", 0);

	memory_configure_bank(machine(), "bank3", 0, 1, ram + 0xfd00, 0);
	memory_configure_bank(machine(), "bank3", 1, 1, rom + 0xfd00, 0);
	memory_set_bank(machine(), "bank3", 1);

	memory_configure_bank(machine(), "bank4", 0, 1, ram + 0xfd00, 0);
	memory_set_bank(machine(), "bank4", 0);

	/* register for state saving */
	save_item(NAME(m_adlc_ie));
	save_item(NAME(m_hdc_ie));
	save_item(NAME(m_rtc_irq));
	save_item(NAME(m_via_irq));
	save_item(NAME(m_hdc_irq));
	save_item(NAME(m_fdc_drq));
	save_item(NAME(m_adlc_irq));
}
Example #3
0
static MACHINE_RESET( shangkid )
{
	cputag_set_input_line(machine, "bbx", INPUT_LINE_HALT, 1 );

	memory_set_bank(machine, "bank1", 0);
	memory_set_bank(machine, "bank2", 0);
}
Example #4
0
static WRITE8_HANDLER(pcat_nit_rombank_w)
{
	pcat_nit_state *state = space->machine().driver_data<pcat_nit_state>();
	logerror( "rom bank #%02x at PC=%08X\n", data, cpu_get_pc(&space->device()) );
	if ( data & 0x40 )
	{
		// rom bank
		space->install_read_bank(0x000d8000, 0x000dffff, "rombank" );
		space->unmap_write(0x000d8000, 0x000dffff);

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

		space->install_readwrite_bank(0x000d8000, 0x000d9fff, "nvrambank" );

		memory_set_bankptr(space->machine(), "nvrambank", state->m_banked_nvram);

	}
}
Example #5
0
/**
 * xx------ msb scrollx
 * --x----- msb scrolly
 * ---x---- screen flip
 * ----xxxx bank
 */
static WRITE8_HANDLER( cpu1_bankswitch_w )
{
	djboy_state *state = space->machine->driver_data<djboy_state>();
	state->videoreg = data;

	switch (data & 0xf)
	{
	/* bs65.5y */
	case 0x00:
	case 0x01:
	case 0x02:
	case 0x03:
		memory_set_bank(space->machine, "bank2", (data & 0xf));
		break;

	/* bs101.6w */
	case 0x08:
	case 0x09:
	case 0x0a:
	case 0x0b:
	case 0x0c:
	case 0x0d:
	case 0x0e:
	case 0x0f:
		memory_set_bank(space->machine, "bank2", (data & 0xf) - 4);
		break;

	default:
		break;
	}
}
Example #6
0
static WRITE8_HANDLER( gng_bankswitch_w )
{
	if (data == 4)
		memory_set_bank(space->machine(), "bank1", 4);
	else
		memory_set_bank(space->machine(), "bank1", (data & 0x03));
}
Example #7
0
void sg1000_state::install_cartridge(UINT8 *ptr, int size)
{
	address_space *program = m_maincpu->memory().space(AS_PROGRAM);

	switch (size)
	{
	case 40 * 1024:
		program->install_read_bank(0x8000, 0x9fff, "bank1");
		program->unmap_write(0x8000, 0x9fff);
		memory_configure_bank(machine(), "bank1", 0, 1, machine().region(Z80_TAG)->base() + 0x8000, 0);
		memory_set_bank(machine(), "bank1", 0);
		break;

	case 48 * 1024:
		program->install_read_bank(0x8000, 0xbfff, "bank1");
		program->unmap_write(0x8000, 0xbfff);
		memory_configure_bank(machine(), "bank1", 0, 1, machine().region(Z80_TAG)->base() + 0x8000, 0);
		memory_set_bank(machine(), "bank1", 0);
		break;

	default:
		if (IS_CARTRIDGE_TV_DRAW(ptr))
		{
			program->install_write_handler(0x6000, 0x6000, 0, 0, write8_delegate(FUNC(sg1000_state::tvdraw_axis_w), this), 0);
			program->install_read_handler(0x8000, 0x8000, 0, 0, read8_delegate(FUNC(sg1000_state::tvdraw_status_r), this), 0);
			program->install_read_handler(0xa000, 0xa000, 0, 0, read8_delegate(FUNC(sg1000_state::tvdraw_data_r), this), 0);
			program->nop_write(0xa000, 0xa000);
		}
		else if (IS_CARTRIDGE_THE_CASTLE(ptr))
		{
			program->install_readwrite_bank(0x8000, 0x9fff, "bank1");
		}
		break;
	}
}
Example #8
0
static WRITE8_HANDLER(tutor_mapper_w)
{
	tutor_state *state = space->machine().driver_data<tutor_state>();
	switch (offset)
	{
	case 0x00:
		/* disable system ROM, enable alternate boot ROM in cartridge */
		break;

	case 0x08:
		/* disable cartridge ROM, enable BASIC ROM at base >8000 */
		state->m_cartridge_enable = 0;
		memory_set_bank(space->machine(), "bank1", 0);
		break;

	case 0x0c:
		/* enable cartridge ROM, disable BASIC ROM at base >8000 */
		state->m_cartridge_enable = 1;
		memory_set_bank(space->machine(), "bank1", 1);
		break;

	default:
		if (! (offset & 1))
			logerror("unknown port in %s %d\n", __FILE__, __LINE__);
		break;
	}
}
Example #9
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_readwrite(space, 0x000d8000, 0x000dffff, 0, 0);

		memory_install_readwrite_bank(space, 0x000d8000, 0x000d9fff, 0, 0, "nvrambank" );

		memory_set_bankptr(space->machine, "nvrambank", banked_nvram);

	}
}
Example #10
0
static MACHINE_RESET( chinhero )
{
	memory_configure_bank(1, 0, 2, memory_region(REGION_CPU1) + 0x8000, 0x8000);
	memory_set_bank(1, 0);

	memory_configure_bank(2, 0, 2, memory_region(REGION_CPU3) + 0x0000, 0x10000);
	memory_set_bank(2, 0);
}
Example #11
0
static WRITE8_HANDLER( cpu0_bankswitch_w )
{
	djboy_state *state = space->machine->driver_data<djboy_state>();

	data ^= state->bankxor;
	memory_set_bank(space->machine, "bank1", data);
	memory_set_bank(space->machine, "bank4", 0); /* unsure if/how this area is banked */
}
Example #12
0
static MACHINE_START( dealer )
{
	UINT8 *ROM = memory_region(machine, "maincpu");
	memory_configure_bank(machine, "bank1", 0, 4, &ROM[0x0000], 0x10000);
	memory_configure_bank(machine, "bank2", 0, 2, &ROM[0x6000], 0x1000);

	memory_set_bank(machine, "bank1", 0);
	memory_set_bank(machine, "bank2", 0);

	MACHINE_START_CALL(epos);
}
Example #13
0
void lc80_state::machine_start()
{
	address_space *program = m_maincpu->memory().space(AS_PROGRAM);

	/* setup memory banking */
	memory_configure_bank(machine(), "bank1", 0, 1, machine().region(Z80_TAG)->base(), 0); // TODO
	memory_configure_bank(machine(), "bank1", 1, 1, machine().region(Z80_TAG)->base(), 0);
	memory_set_bank(machine(), "bank1", 1);

	memory_configure_bank(machine(), "bank2", 0, 1, machine().region(Z80_TAG)->base() + 0x800, 0); // TODO
	memory_configure_bank(machine(), "bank2", 1, 1, machine().region(Z80_TAG)->base() + 0x800, 0);
	memory_set_bank(machine(), "bank2", 1);

	memory_configure_bank(machine(), "bank3", 0, 1, machine().region(Z80_TAG)->base() + 0x1000, 0); // TODO
	memory_configure_bank(machine(), "bank3", 1, 1, machine().region(Z80_TAG)->base() + 0x1000, 0);
	memory_set_bank(machine(), "bank3", 1);

	memory_configure_bank(machine(), "bank4", 0, 1, machine().region(Z80_TAG)->base() + 0x2000, 0);
	memory_set_bank(machine(), "bank4", 0);

	program->install_readwrite_bank(0x0000, 0x07ff, "bank1");
	program->install_readwrite_bank(0x0800, 0x0fff, "bank2");
	program->install_readwrite_bank(0x1000, 0x17ff, "bank3");

	switch (ram_get_size(m_ram))
	{
	case 1*1024:
		program->install_readwrite_bank(0x2000, 0x23ff, "bank4");
		program->unmap_readwrite(0x2400, 0x2fff);
		break;

	case 2*1024:
		program->install_readwrite_bank(0x2000, 0x27ff, "bank4");
		program->unmap_readwrite(0x2800, 0x2fff);
		break;

	case 3*1024:
		program->install_readwrite_bank(0x2000, 0x2bff, "bank4");
		program->unmap_readwrite(0x2c00, 0x2fff);
		break;

	case 4*1024:
		program->install_readwrite_bank(0x2000, 0x2fff, "bank4");
		break;
	}

	/* register for state saving */
	save_item(NAME(m_digit));
	save_item(NAME(m_segment));
}
Example #14
0
void mm1_state::machine_start()
{
	address_space *program = m_maincpu->memory().space(AS_PROGRAM);

	/* find memory regions */
	m_key_rom = machine().region("keyboard")->base();

	/* setup memory banking */
	program->install_read_bank(0x0000, 0x0fff, "bank1");
	program->unmap_write(0x0000, 0x0fff);
	memory_configure_bank(machine(), "bank1", 0, 1, machine().region("bios")->base(), 0);
	memory_configure_bank(machine(), "bank1", 1, 1, ram_get_ptr(machine().device(RAM_TAG)), 0);
	memory_set_bank(machine(), "bank1", 0);

	/* register for state saving */
	state_save_register_global(machine(), m_sense);
	state_save_register_global(machine(), m_drive);
	state_save_register_global(machine(), m_llen);
	state_save_register_global(machine(), m_intc);
	state_save_register_global(machine(), m_rx21);
	state_save_register_global(machine(), m_tx21);
	state_save_register_global(machine(), m_rcl);
	state_save_register_global(machine(), m_recall);
	state_save_register_global(machine(), m_dack3);
}
Example #15
0
ROM_END

/***************************************************************************

  Game driver(s)

***************************************************************************/

static KONAMI_SETLINES_CALLBACK( crimfght_banking )
{
	crimfght_state *state = device->machine().driver_data<crimfght_state>();

	/* bit 5 = select work RAM or palette */
	if (lines & 0x20)
	{
		device->memory().space(AS_PROGRAM)->install_read_bank(0x0000, 0x03ff, "bank3");
		device->memory().space(AS_PROGRAM)->install_legacy_write_handler(0x0000, 0x03ff, FUNC(paletteram_xBBBBBGGGGGRRRRR_be_w));
		memory_set_bankptr(device->machine(), "bank3", device->machine().generic.paletteram.v);
	}
	else
		device->memory().space(AS_PROGRAM)->install_readwrite_bank(0x0000, 0x03ff, "bank1");								/* RAM */

	/* bit 6 = enable char ROM reading through the video RAM */
	k052109_set_rmrd_line(state->m_k052109, (lines & 0x40) ? ASSERT_LINE : CLEAR_LINE);

	memory_set_bank(device->machine(), "bank2", lines & 0x0f);
}
Example #16
0
ADDRESS_MAP_END


static WRITE8_HANDLER( tecmosys_z80_bank_w )
{
	memory_set_bank(space->machine(), "bank1", data);
}
Example #17
0
	AM_RANGE(0x8000, 0xffff) AM_ROM
ADDRESS_MAP_END

static WRITE8_HANDLER( z80_bankswitch_w )
{
	memory_set_bank(2, data & 7);
}
Example #18
0
void segaic16_memory_mapper_set_decrypted(running_machine *machine, UINT8 *decrypted)
{
	struct memory_mapper_chip *chip = &memory_mapper;
	offs_t romsize = chip->cpu->region()->bytes();
	int rgnum;

	/* loop over the regions */
	for (rgnum = 0; chip->map[rgnum].regbase != 0; rgnum++)
	{
		static const offs_t region_size_map[4] = { 0x00ffff, 0x01ffff, 0x07ffff, 0x1fffff };
		const segaic16_memory_map_entry *rgn = &chip->map[rgnum];
		offs_t region_size = region_size_map[chip->regs[rgn->regbase] & 3];
		offs_t region_base = (chip->regs[rgn->regbase + 1] << 16) & ~region_size;
		offs_t region_start = region_base + (rgn->regoffs & region_size);
		const char *readbank = rgn->readbank;

		/* skip non-ROM regions */
		if (readbank == NULL || rgn->romoffset == ~0)
			continue;

		/* skip any mappings beyond the ROM size */
		if (region_start >= romsize)
			continue;

		memory_configure_bank_decrypted(machine, readbank, 0, 1, decrypted + region_start, 0);
		memory_set_bank(machine, readbank, 0);
	}
}
Example #19
0
/***************************************************************************

  Game ROMs

***************************************************************************/

ROM_START( blockhl )
	ROM_REGION( 0x18000, "maincpu", 0 ) /* code + banked roms + space for banked RAM */
	ROM_LOAD( "973l02.e21", 0x10000, 0x08000, CRC(e14f849a) SHA1(d44cf178cc98998b72ed32c6e20b6ebdf1f97579) )
	ROM_CONTINUE(           0x08000, 0x08000 )

	ROM_REGION( 0x10000, "audiocpu", 0 ) /* 64k for the sound CPU */
	ROM_LOAD( "973d01.g6",  0x0000, 0x8000, CRC(eeee9d92) SHA1(6c6c324b1f6f4fba0aa12e0d1fc5dbab133ef669) )

	ROM_REGION( 0x20000, "gfx1", 0 ) /* graphics (addressable by the main CPU) */
	ROM_LOAD16_BYTE( "973f07.k15", 0x00000, 0x08000, CRC(1a8cd9b4) SHA1(7cb7944d24ac51fa6b610542d9dec68697cacf0f) )	/* tiles */
	ROM_LOAD16_BYTE( "973f08.k18", 0x00001, 0x08000, CRC(952b51a6) SHA1(017575738d444b688b137cad5611638d53be84f2) )
	ROM_LOAD16_BYTE( "973f09.k20", 0x10000, 0x08000, CRC(77841594) SHA1(e1bfdc5bb598d865868d578ef7faba8078becd7a) )
	ROM_LOAD16_BYTE( "973f10.k23", 0x10001, 0x08000, CRC(09039fab) SHA1(a9dea17aacf4484d21ef3b16470263447b51b6b5) )

	ROM_REGION( 0x20000, "gfx2", 0 ) /* graphics (addressable by the main CPU) */
	ROM_LOAD16_BYTE( "973f06.k12", 0x00000, 0x08000, CRC(51acfdb6) SHA1(94d243f341b490684f5297d95d4835bd522ece35) )	/* sprites */
	ROM_LOAD16_BYTE( "973f05.k9",  0x00001, 0x08000, CRC(4cfea298) SHA1(4772b5b99f5fd8174d8884bd84173512e1edabf4) )
	ROM_LOAD16_BYTE( "973f04.k7",  0x10000, 0x08000, CRC(69ca41bd) SHA1(9b0b1c888efd2f2d5525f14778e18fb4a7353eb6) )
	ROM_LOAD16_BYTE( "973f03.k4",  0x10001, 0x08000, CRC(21e98472) SHA1(8c697d369a1f57be0825c33b4e9107ce1b02a130) )

	ROM_REGION( 0x0100, "proms", 0 )	/* PROMs */
	ROM_LOAD( "973a11.h10", 0x0000, 0x0100, CRC(46d28fe9) SHA1(9d0811a928c8907785ef483bfbee5445506b3ec8) )	/* priority encoder (not used) */
ROM_END

ROM_START( quarth )
	ROM_REGION( 0x18000, "maincpu", 0 ) /* code + banked roms + space for banked RAM */
	ROM_LOAD( "973j02.e21", 0x10000, 0x08000, CRC(27a90118) SHA1(51309385b93db29b9277d14252166c4ea1746303) )
	ROM_CONTINUE(           0x08000, 0x08000 )

	ROM_REGION( 0x10000, "audiocpu", 0 ) /* 64k for the sound CPU */
	ROM_LOAD( "973d01.g6",  0x0000, 0x8000, CRC(eeee9d92) SHA1(6c6c324b1f6f4fba0aa12e0d1fc5dbab133ef669) )

	ROM_REGION( 0x20000, "gfx1", 0 ) /* graphics (addressable by the main CPU) */
	ROM_LOAD16_BYTE( "973e07.k15", 0x00000, 0x08000, CRC(0bd6b0f8) SHA1(6c59cf637354fe2df424eaa89feb9c1bc1f66a92) )	/* tiles */
	ROM_LOAD16_BYTE( "973e08.k18", 0x00001, 0x08000, CRC(104d0d5f) SHA1(595698911513113d01e5b565f5b073d1bd033d3f) )
	ROM_LOAD16_BYTE( "973e09.k20", 0x10000, 0x08000, CRC(bd3a6f24) SHA1(eb45db3a6a52bb2b25df8c2dace877e59b4130a6) )
	ROM_LOAD16_BYTE( "973e10.k23", 0x10001, 0x08000, CRC(cf5e4b86) SHA1(43348753894c1763b26dbfc70245dac92048db8f) )

	ROM_REGION( 0x20000, "gfx2", 0 ) /* graphics (addressable by the main CPU) */
	ROM_LOAD16_BYTE( "973e06.k12", 0x00000, 0x08000, CRC(0d58af85) SHA1(2efd661d614fb305a14cfe1aa4fb17714f215d4f) )	/* sprites */
	ROM_LOAD16_BYTE( "973e05.k9",  0x00001, 0x08000, CRC(15d822cb) SHA1(70ecad5e0a461df0da6e6eb23f43a7b643297f0d) )
	ROM_LOAD16_BYTE( "973e04.k7",  0x10000, 0x08000, CRC(d70f4a2c) SHA1(25f835a17bacf2b8debb2eb8a3cff90cab3f402a) )
	ROM_LOAD16_BYTE( "973e03.k4",  0x10001, 0x08000, CRC(2c5a4b4b) SHA1(e2991dd78b9cd96cf93ebd6de0d4e060d346ab9c) )

	ROM_REGION( 0x0100, "proms", 0 )	/* PROMs */
	ROM_LOAD( "973a11.h10", 0x0000, 0x0100, CRC(46d28fe9) SHA1(9d0811a928c8907785ef483bfbee5445506b3ec8) )	/* priority encoder (not used) */
ROM_END


/***************************************************************************

  Game driver(s)

***************************************************************************/

static KONAMI_SETLINES_CALLBACK( blockhl_banking )
{
	blockhl_state *state = device->machine->driver_data<blockhl_state>();

	/* bits 0-1 = ROM bank */
	state->rombank = lines & 0x03;
	memory_set_bank(device->machine, "bank1", state->rombank);

	/* bits 3/4 = coin counters */
	coin_counter_w(device->machine, 0, lines & 0x08);
	coin_counter_w(device->machine, 1, lines & 0x10);

	/* bit 5 = select palette RAM or work RAM at 5800-5fff */
	state->palette_selected = ~lines & 0x20;

	/* bit 6 = enable char ROM reading through the video RAM */
	k052109_set_rmrd_line(state->k052109, (lines & 0x40) ? ASSERT_LINE : CLEAR_LINE);

	/* bit 7 used but unknown */

	/* other bits unknown */

	if ((lines & 0x84) != 0x80)
		logerror("%04x: setlines %02x\n", cpu_get_pc(device), lines);
}
Example #20
0
static void gmgalax_select_game(int game)
{
	gmgalax_selected_game = game;

	memory_set_bank(1, game);

	galaxold_gfxbank_w(Machine, 0, gmgalax_selected_game);
}
Example #21
0
static WRITE8_HANDLER( fromanc2_subcpu_rombank_w )
{
    // Change ROM BANK
    memory_set_bank(space->machine(), "bank1", data & 0x03);

    // Change RAM BANK
    memory_set_bank(space->machine(), "bank2", (data & 0x0c) >> 2);
}
Example #22
0
INPUT_PORTS_END


/* after the first 4 bytes have been read from ROM, switch the ram back in */
static TIMER_CALLBACK( sys2900_boot )
{
	memory_set_bank(machine, "boot", 0);
}
Example #23
0
ADDRESS_MAP_END

/*** Sound ***/

static WRITE8_HANDLER ( mcatadv_sound_bw_w )
{
	memory_set_bank(space->machine, "bank1", data);
}
Example #24
0
void mc1000_state::bankswitch()
{
	address_space *program = m_maincpu->memory().space(AS_PROGRAM);

	/* MC6845 video RAM */
	memory_set_bank(machine(), "bank2", m_mc6845_bank);

	/* extended RAM */
	if (ram_get_size(m_ram) > 16*1024)
	{
		program->install_readwrite_bank(0x4000, 0x7fff, "bank3");
	}
	else
	{
		program->unmap_readwrite(0x4000, 0x7fff);
	}

	/* MC6847 video RAM */
	if (m_mc6847_bank)
	{
		if (ram_get_size(m_ram) > 16*1024)
		{
			program->install_readwrite_bank(0x8000, 0x97ff, "bank4");
		}
		else
		{
			program->unmap_readwrite(0x8000, 0x97ff);
		}
	}
	else
	{
		program->install_readwrite_bank(0x8000, 0x97ff, "bank4");
	}

	memory_set_bank(machine(), "bank4", m_mc6847_bank);

	/* extended RAM */
	if (ram_get_size(m_ram) > 16*1024)
	{
		program->install_readwrite_bank(0x9800, 0xbfff, "bank5");
	}
	else
	{
		program->unmap_readwrite(0x9800, 0xbfff);
	}
}
Example #25
0
static void gmgalax_select_game(int game)
{
	gmgalax_selected_game = game;

	memory_set_bank(1, game);

	galaxian_gfxbank_w(0, gmgalax_selected_game);
}
Example #26
0
static void common_init_machine(int base)
{
	/* internal ram */
	memory_configure_bank(1, 0, 1, mess_ram, 0);
	memory_set_bank(1, 0);
	
	/* expansion memory configuration */
	switch (mess_ram_size) {
		case 18 * 1024:
		case 22 * 1024:
		case 32 * 1024:
			/* install 16KB memory expansion */
			memory_install_read8_handler (0, ADDRESS_SPACE_PROGRAM, base, base + 0x3fff, 0, 0, MRA8_BANK2);
			memory_install_write8_handler(0, ADDRESS_SPACE_PROGRAM, base, base + 0x3fff, 0, 0, MWA8_BANK2);
			memory_configure_bank(2, 0, 1, mess_ram + base - 0x7800, 0);
			memory_set_bank(2, 0);
			
			memory_install_read8_handler (0, ADDRESS_SPACE_PROGRAM, base + 0x4000, 0xffff, 0, 0, MRA8_NOP);
			memory_install_write8_handler(0, ADDRESS_SPACE_PROGRAM, base + 0x4000, 0xffff, 0, 0, MWA8_NOP);
			break;
			
		case 66 * 1024:
		case 4098 * 1024:
			/* 64KB/4MB memory expansion */

			/* install fixed first bank */
			memory_install_read8_handler (0, ADDRESS_SPACE_PROGRAM, 0x8000, 0xbfff, 0, 0, MRA8_BANK2);
			memory_install_write8_handler(0, ADDRESS_SPACE_PROGRAM, 0x8000, 0xbfff, 0, 0, MWA8_BANK2);
			memory_configure_bank(2, 0, 1, mess_ram + 0x800, 0);
			memory_set_bank(2, 0);
			
			/* install the others, dynamically banked in */
			memory_install_read8_handler (0, ADDRESS_SPACE_PROGRAM, 0xc000, 0xffff, 0, 0, MRA8_BANK3);
			memory_install_write8_handler(0, ADDRESS_SPACE_PROGRAM, 0xc000, 0xffff, 0, 0, MWA8_BANK3);
			memory_configure_bank(3, 0, (mess_ram_size - 0x4800) / 0x4000, mess_ram + 0x4800, 0x4000);
			memory_set_bank(3, 0);
			break;
			
		default:
			/* no memory expansion */
			memory_install_read8_handler (0, ADDRESS_SPACE_PROGRAM, base, 0xffff, 0, 0, MRA8_NOP);
			memory_install_write8_handler(0, ADDRESS_SPACE_PROGRAM, base, 0xffff, 0, 0, MWA8_NOP);
			break;
	}
}
Example #27
0
static DRIVER_INIT(tutor)
{
	tutor_state *state = machine.driver_data<tutor_state>();
	state->m_tape_interrupt_timer = machine.scheduler().timer_alloc(FUNC(tape_interrupt_handler));

	memory_configure_bank(machine, "bank1", 0, 1, machine.region("maincpu")->base() + basic_base, 0);
	memory_configure_bank(machine, "bank1", 1, 1, machine.region("maincpu")->base() + cartridge_base, 0);
	memory_set_bank(machine, "bank1", 0);
}
Example #28
0
static WRITE8_HANDLER(magtouch_io_w)
{
	switch(offset)
	{
		case 6:
			memory_set_bank(space->machine(), "rombank", data & 0x7f );
			break;
	}
}
Example #29
0
static void cavelon_banksw(running_machine *machine)
{
	/* any read/write access in the 0x8000-0xffff region causes a bank switch.
       Only the lower 0x2000 is switched but we switch the whole region
       to keep the CPU core happy at the boundaries */

	cavelon_bank = !cavelon_bank;
	memory_set_bank(machine, "bank1", cavelon_bank);
}
Example #30
0
void vixen_state::machine_reset()
{
	address_space *program = m_maincpu->memory().space(AS_PROGRAM);

	program->install_read_bank(0x0000, 0xefff, 0xfff, 0, "bank1");
	program->install_write_bank(0x0000, 0xefff, 0xfff, 0, "bank2");

	memory_set_bank(m_machine, "bank1", 1);
	memory_set_bank(m_machine, "bank2", 1);
	memory_set_bank(m_machine, "bank3", 1);

	m_reset = 1;

	m_vsync = 0;
	m_cmd_d0 = 0;
	m_cmd_d1 = 0;
	update_interrupt();
}