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))); } }
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); } }
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); }
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); }
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); } }
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(); }
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); }
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)); }
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; }
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); }
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; }
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)); }
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); }
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 ); } } }