Пример #1
0
static DRIVER_INIT( aquarius )
{
	/* install expansion memory if available */
	if (ram_get_size(machine.device(RAM_TAG)) > 0x1000)
	{
		address_space *space = machine.device("maincpu")->memory().space(AS_PROGRAM);

		space->install_readwrite_bank(0x4000, 0x4000 + ram_get_size(machine.device(RAM_TAG)) - 0x1000 - 1, "bank1");
		memory_set_bankptr(machine, "bank1", ram_get_ptr(machine.device(RAM_TAG)));
	}
}
Пример #2
0
static MACHINE_START( palm )
{
	palm_state *state = machine.driver_data<palm_state>();
    address_space *space = machine.device("maincpu")->memory().space(AS_PROGRAM);
    space->install_read_bank (0x000000, ram_get_size(machine.device(RAM_TAG)) - 1, ram_get_size(machine.device(RAM_TAG)) - 1, 0, "bank1");
    space->install_write_bank(0x000000, ram_get_size(machine.device(RAM_TAG)) - 1, ram_get_size(machine.device(RAM_TAG)) - 1, 0, "bank1");
    memory_set_bankptr(machine, "bank1", ram_get_ptr(machine.device(RAM_TAG)));

    state->save_item(NAME(state->m_port_f_latch));
    state->save_item(NAME(state->m_spim_data));
	if (machine.device<cpu_device>("maincpu")->debug()) {
		machine.device<cpu_device>("maincpu")->debug()->set_dasm_override(palm_dasm_override);
	}
}
Пример #3
0
static DRIVER_INIT( mc10 )
{
	mc10_state *mc10 = machine.driver_data<mc10_state>();
	address_space *prg = machine.device("maincpu")->memory().space(AS_PROGRAM);

	/* initialize keyboard strobe */
	mc10->m_keyboard_strobe = 0x00;

	/* initialize memory */
	mc10->m_ram_base = ram_get_ptr(mc10->m_ram);
	mc10->m_ram_size = ram_get_size(mc10->m_ram);
	mc10->m_pr_state = PRINTER_WAIT;

	memory_set_bankptr(machine, "bank1", mc10->m_ram_base);

	/* initialize memory expansion */
	if (mc10->m_ram_size == 20*1024)
		memory_set_bankptr(machine, "bank2", mc10->m_ram_base + 0x1000);
	else if (mc10->m_ram_size == 24*1024)
		memory_set_bankptr(machine, "bank2", mc10->m_ram_base + 0x2000);
	else  if (mc10->m_ram_size != 32*1024)		//ensure that is not alice90
		prg->nop_readwrite(0x5000, 0x8fff);

	/* register for state saving */
	state_save_register_global(machine, mc10->m_keyboard_strobe);

	//for alice32 force port4 DDR to 0xff at startup
	if (!strcmp(machine.system().name, "alice32") || !strcmp(machine.system().name, "alice90"))
		m6801_io_w(prg, 0x05, 0xff);
}
Пример #4
0
void m5_state::machine_start()
{
	address_space *program = m_maincpu->memory().space(AS_PROGRAM);

	// configure VDP
	TMS9928A_configure(m_vdp_intf);

	// configure RAM
	switch (ram_get_size(m_ram))
	{
	case 4*1024:
		program->unmap_readwrite(0x8000, 0xffff);
		break;

	case 36*1024:
		break;

	case 68*1024:
		break;
	}

	// register for state saving
	state_save_register_global(machine(), m_fd5_data);
	state_save_register_global(machine(), m_fd5_com);
	state_save_register_global(machine(), m_intra);
	state_save_register_global(machine(), m_ibfa);
	state_save_register_global(machine(), m_obfa);
}
Пример #5
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);
	}
}
Пример #6
0
static MACHINE_RESET( palm )
{
    // Copy boot ROM
    UINT8* bios = machine.region("bios")->base();
    memset(ram_get_ptr(machine.device(RAM_TAG)), 0, ram_get_size(machine.device(RAM_TAG)));
    memcpy(ram_get_ptr(machine.device(RAM_TAG)), bios, 0x20000);

    machine.device("maincpu")->reset();
}
Пример #7
0
static DRIVER_INIT(a310)
{
	UINT32 ram_size = ram_get_size(machine.device(RAM_TAG));

	archimedes_memc_physmem = auto_alloc_array(machine, UINT32, 0x01000000);

	machine.device("maincpu")->memory().space(AS_PROGRAM)->install_legacy_readwrite_handler( 0x02000000, 0x02000000+(ram_size-1), FUNC(a310_psy_wram_r), FUNC(a310_psy_wram_w) );

	archimedes_driver_init(machine);
}
Пример #8
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));
}
Пример #9
0
static QUICKLOAD_LOAD( elf )
{
	elf2_state *state = image.device().machine().driver_data<elf2_state>();

	int size = image.length();

	if (size > ram_get_size(state->m_ram))
	{
		return IMAGE_INIT_FAIL;
	}

	image.fread(ram_get_ptr(state->m_ram), size);

	return IMAGE_INIT_PASS;
}
Пример #10
0
void tmc600_state::machine_start()
{
	address_space *program = m_maincpu->memory().space(AS_PROGRAM);

	/* configure RAM */
	switch (ram_get_size(m_ram))
	{
	case 8*1024:
		program->unmap_readwrite(0x8000, 0xbfff);
		break;

	case 16*1024:
		program->unmap_readwrite(0xa000, 0xbfff);
		break;
	}

	/* register for state saving */
	state_save_register_global(machine(), m_keylatch);
}
Пример #11
0
static DRIVER_INIT( apricot )
{
	apricot_state *state = machine.driver_data<apricot_state>();
	device_t *maincpu = machine.device("maincpu");
	address_space *prg = maincpu->memory().space(AS_PROGRAM);

	UINT8 *ram = ram_get_ptr(machine.device(RAM_TAG));
	UINT32 ram_size = ram_get_size(machine.device(RAM_TAG));

	prg->unmap_readwrite(0x40000, 0xeffff);
	prg->install_ram(0x00000, ram_size - 1, ram);

	device_set_irq_callback(maincpu, apricot_irq_ack);

	state->m_pic8259 = machine.device("ic31");
	state->m_wd2793 = machine.device("ic68");
	state->m_mc6845 = machine.device<mc6845_device>("ic30");

	state->m_video_mode = 0;
	state->m_display_on = 1;
}
Пример #12
0
void cosmicos_state::machine_start()
{
	address_space *program = m_maincpu->memory().space(AS_PROGRAM);

	/* initialize LED display */
	dm9368_rbi_w(m_led, 1);

	/* setup memory banking */
	switch (ram_get_size(m_ram))
	{
	case 256:
		program->unmap_readwrite(0x0000, 0xbfff);
		break;

	case 4*1024:
		program->unmap_readwrite(0x1000, 0xbfff);
		break;
	}

	set_ram_mode();

	/* register for state saving */
	save_item(NAME(m_wait));
	save_item(NAME(m_clear));
	save_item(NAME(m_sc1));
	save_item(NAME(m_data));
	save_item(NAME(m_boot));
	save_item(NAME(m_ram_protect));
	save_item(NAME(m_ram_disable));
	save_item(NAME(m_keylatch));
	save_item(NAME(m_segment));
	save_item(NAME(m_digit));
	save_item(NAME(m_counter));
	save_item(NAME(m_q));
	save_item(NAME(m_dmaout));
	save_item(NAME(m_efx));
	save_item(NAME(m_video_on));
}
Пример #13
0
static void galaxy_setup_snapshot (running_machine &machine, const UINT8 * data, UINT32 size)
{
	device_t *cpu = machine.device("maincpu");

	switch (size)
	{
		case GALAXY_SNAPSHOT_V1_SIZE:
			cpu_set_reg(cpu, Z80_AF,   data[0x00] | data[0x01] << 8);
			cpu_set_reg(cpu, Z80_BC,   data[0x04] | data[0x05] << 8);
			cpu_set_reg(cpu, Z80_DE,   data[0x08] | data[0x09] << 8);
			cpu_set_reg(cpu, Z80_HL,   data[0x0c] | data[0x0d] << 8);
			cpu_set_reg(cpu, Z80_IX,   data[0x10] | data[0x11] << 8);
			cpu_set_reg(cpu, Z80_IY,   data[0x14] | data[0x15] << 8);
			cpu_set_reg(cpu, Z80_PC,   data[0x18] | data[0x19] << 8);
			cpu_set_reg(cpu, Z80_SP,   data[0x1c] | data[0x1d] << 8);
			cpu_set_reg(cpu, Z80_AF2,  data[0x20] | data[0x21] << 8);
			cpu_set_reg(cpu, Z80_BC2,  data[0x24] | data[0x25] << 8);
			cpu_set_reg(cpu, Z80_DE2,  data[0x28] | data[0x29] << 8);
			cpu_set_reg(cpu, Z80_HL2,  data[0x2c] | data[0x2d] << 8);
			cpu_set_reg(cpu, Z80_IFF1, data[0x30]);
			cpu_set_reg(cpu, Z80_IFF2, data[0x34]);
			cpu_set_reg(cpu, Z80_HALT, data[0x38]);
			cpu_set_reg(cpu, Z80_IM,   data[0x3c]);
			cpu_set_reg(cpu, Z80_I,    data[0x40]);
			cpu_set_reg(cpu, Z80_R,    (data[0x44] & 0x7f) | (data[0x48] & 0x80));

			memcpy (ram_get_ptr(machine.device(RAM_TAG)), data + 0x084c, (ram_get_size(machine.device(RAM_TAG)) < 0x1800) ? ram_get_size(machine.device(RAM_TAG)) : 0x1800);

			break;
		case GALAXY_SNAPSHOT_V2_SIZE:
			cpu_set_reg(cpu, Z80_AF,   data[0x00] | data[0x01] << 8);
			cpu_set_reg(cpu, Z80_BC,   data[0x02] | data[0x03] << 8);
			cpu_set_reg(cpu, Z80_DE,   data[0x04] | data[0x05] << 8);
			cpu_set_reg(cpu, Z80_HL,   data[0x06] | data[0x07] << 8);
			cpu_set_reg(cpu, Z80_IX,   data[0x08] | data[0x09] << 8);
			cpu_set_reg(cpu, Z80_IY,   data[0x0a] | data[0x0b] << 8);
			cpu_set_reg(cpu, Z80_PC,   data[0x0c] | data[0x0d] << 8);
			cpu_set_reg(cpu, Z80_SP,   data[0x0e] | data[0x0f] << 8);
			cpu_set_reg(cpu, Z80_AF2,  data[0x10] | data[0x11] << 8);
			cpu_set_reg(cpu, Z80_BC2,  data[0x12] | data[0x13] << 8);
			cpu_set_reg(cpu, Z80_DE2,  data[0x14] | data[0x15] << 8);
			cpu_set_reg(cpu, Z80_HL2,  data[0x16] | data[0x17] << 8);

			cpu_set_reg(cpu, Z80_IFF1, data[0x18] & 0x01);
			cpu_set_reg(cpu, Z80_IFF2, (UINT64)0);

			cpu_set_reg(cpu, Z80_HALT, (UINT64)0);

			cpu_set_reg(cpu, Z80_IM,   (data[0x18] >> 1) & 0x03);

			cpu_set_reg(cpu, Z80_I,    data[0x19]);
			cpu_set_reg(cpu, Z80_R,    data[0x1a]);

			memcpy (ram_get_ptr(machine.device(RAM_TAG)), data + 0x0834, (ram_get_size(machine.device(RAM_TAG)) < 0x1800) ? ram_get_size(machine.device(RAM_TAG)) : 0x1800);

			break;
	}

	device_set_input_line(cpu, INPUT_LINE_NMI, CLEAR_LINE);
	device_set_input_line(cpu, INPUT_LINE_IRQ0, CLEAR_LINE);
}
Пример #14
0
static void svi318_set_banks(running_machine &machine)
{
	svi318_state *state = machine.driver_data<svi318_state>();
	const UINT8 v = state->m_svi.bank_switch;
	UINT8 *ram = ram_get_ptr(machine.device(RAM_TAG));
	UINT32 ram_size = ram_get_size(machine.device(RAM_TAG));

	state->m_svi.bankLow = ( v & 1 ) ? ( ( v & 2 ) ? ( ( v & 8 ) ? SVI_INTERNAL : SVI_EXPRAM3 ) : SVI_EXPRAM2 ) : SVI_CART;
	state->m_svi.bankHigh1 = ( v & 4 ) ? ( ( v & 16 ) ? SVI_INTERNAL : SVI_EXPRAM3 ) : SVI_EXPRAM2;

	state->m_svi.bankLow_ptr = state->m_svi.empty_bank;
	state->m_svi.bankLow_read_only = 1;

	switch( state->m_svi.bankLow )
	{
	case SVI_INTERNAL:
		state->m_svi.bankLow_ptr = machine.region("maincpu")->base();
		break;
	case SVI_CART:
		if ( state->m_pcart )
		{
			state->m_svi.bankLow_ptr = state->m_pcart;
		}
		break;
	case SVI_EXPRAM2:
		if ( ram_size >= 64 * 1024 )
		{
			state->m_svi.bankLow_ptr = ram + ram_size - 64 * 1024;
			state->m_svi.bankLow_read_only = 0;
		}
		break;
	case SVI_EXPRAM3:
		if ( ram_size > 128 * 1024 )
		{
			state->m_svi.bankLow_ptr = ram + ram_size - 128 * 1024;
			state->m_svi.bankLow_read_only = 0;
		}
		break;
	}

	state->m_svi.bankHigh1_ptr = state->m_svi.bankHigh2_ptr = state->m_svi.empty_bank;
	state->m_svi.bankHigh1_read_only = state->m_svi.bankHigh2_read_only = 1;

	switch( state->m_svi.bankHigh1 )
	{
	case SVI_INTERNAL:
		if ( ram_size == 16 * 1024 )
		{
			state->m_svi.bankHigh2_ptr = ram;
			state->m_svi.bankHigh2_read_only = 0;
		}
		else
		{
			state->m_svi.bankHigh1_ptr = ram;
			state->m_svi.bankHigh1_read_only = 0;
			state->m_svi.bankHigh2_ptr = ram + 0x4000;
			state->m_svi.bankHigh2_read_only = 0;
		}
		break;
	case SVI_EXPRAM2:
		if ( ram_size > 64 * 1024 )
		{
			state->m_svi.bankHigh1_ptr = ram + ram_size - 64 * 1024 + 32 * 1024;
			state->m_svi.bankHigh1_read_only = 0;
			state->m_svi.bankHigh2_ptr = ram + ram_size - 64 * 1024 + 48 * 1024;
			state->m_svi.bankHigh2_read_only = 0;
		}
		break;
	case SVI_EXPRAM3:
		if ( ram_size > 128 * 1024 )
		{
			state->m_svi.bankHigh1_ptr = ram + ram_size - 128 * 1024 + 32 * 1024;
			state->m_svi.bankHigh1_read_only = 0;
			state->m_svi.bankHigh2_ptr = ram + ram_size - 128 * 1024 + 48 * 1024;
			state->m_svi.bankHigh2_read_only = 0;
		}
		break;
	}

	/* Check for special CART based banking */
	if ( state->m_svi.bankLow == SVI_CART && ( v & 0xc0 ) != 0xc0 )
	{
		state->m_svi.bankHigh1_ptr = state->m_svi.empty_bank;
		state->m_svi.bankHigh1_read_only = 1;
		state->m_svi.bankHigh2_ptr = state->m_svi.empty_bank;
		state->m_svi.bankHigh2_read_only = 1;
		if ( state->m_pcart && ! ( v & 0x80 ) )
		{
			state->m_svi.bankHigh2_ptr = state->m_pcart + 0x4000;
		}
		if ( state->m_pcart && ! ( v & 0x40 ) )
		{
			state->m_svi.bankHigh1_ptr = state->m_pcart;
		}
	}

	memory_set_bankptr(machine, "bank1", state->m_svi.bankLow_ptr );
	memory_set_bankptr(machine, "bank2", state->m_svi.bankHigh1_ptr );
	memory_set_bankptr(machine, "bank3", state->m_svi.bankHigh2_ptr );

	/* SVI-806 80 column card specific banking */
	if ( state->m_svi.svi806_present )
	{
		if ( state->m_svi.svi806_ram_enabled )
		{
			memory_set_bankptr(machine, "bank4", state->m_svi.svi806_ram );
		}
		else
		{
			memory_set_bankptr(machine, "bank4", state->m_svi.bankHigh2_ptr + 0x3000 );
		}
	}
}