void oric_state::machine_start() { machine_start_common(); m_bank_c000_r->set_base(m_rom->base()); m_bank_e000_r->set_base(m_rom->base() + 0x2000); m_bank_f800_r->set_base(m_rom->base() + 0x3800); }
void tandy1000_state::tandy1000_set_bios_bank() { UINT8 *p = NULL; assert( m_romcs0 != NULL ); assert( m_romcs1 != NULL ); assert( m_biosbank != NULL ); if ( m_tandy_bios_bank & 0x10 ) { if ( m_tandy_bios_bank & 0x04 ) { p = m_romcs0->base() + ( m_tandy_bios_bank & 0x03 ) * 0x10000; } else { p = m_romcs1->base() + ( m_tandy_bios_bank & 0x03 ) * 0x10000; } } else { if ( m_tandy_bios_bank & 0x08 ) { p = m_romcs0->base() + ( m_tandy_bios_bank & 0x07 ) * 0x10000; } else { p = m_romcs1->base() + ( m_tandy_bios_bank & 0x07 ) * 0x10000; } } m_biosbank->set_base( p ); }
UINT8 plus4_state::read_memory(address_space &space, offs_t offset, int ba, int scs, int phi2, int user, int _6551, int addr_clk, int keyport, int kernal) { int cs0 = 1, cs1 = 1, c1l = 1, c1h = 1, c2l = 1, c2h = 1; UINT8 data = m_ted->read(space, offset, cs0, cs1); //logerror("offset %04x user %u 6551 %u addr_clk %u keyport %u kernal %u cs0 %u cs1 %u\n", offset,user,_6551,addr_clk,keyport,kernal,cs0,cs1); if (!scs && m_vslsi) { data = m_vslsi->read(space, offset & 0x03); } else if (!user) { if (m_spi_user) { data = m_spi_user->read(space, 0); } data &= ~0x04; data |= m_cassette->sense_r() << 2; } else if (!_6551 && m_acia) { data = m_acia->read(space, offset & 0x03); } else if (!keyport) { data = m_spi_kb->read(space, 0); } else if (!cs0) { switch (m_addr & 0x03) { case CS0_BASIC: data = m_kernal->base()[offset & 0x7fff]; break; case CS0_FUNCTION_LO: if (m_function != nullptr) { data = m_function->base()[offset & 0x7fff]; } break; case CS0_C1_LOW: c1l = 0; break; case CS0_C2_LOW: c2l = 0; if (m_c2 != nullptr) { data = m_c2->base()[offset & 0x7fff]; } break; } } else if (!cs1) { if (kernal) { data = m_kernal->base()[offset & 0x7fff]; } else { switch ((m_addr >> 2) & 0x03) { case CS1_KERNAL: data = m_kernal->base()[offset & 0x7fff]; break; case CS1_FUNCTION_HI: if (m_function != nullptr) { data = m_function->base()[offset & 0x7fff]; } break; case CS1_C1_HIGH: c1h = 0; break; case CS1_C2_HIGH: c2h = 0; if (m_c2 != nullptr) { data = m_c2->base()[offset & 0x7fff]; } break; } } } else if (offset < 0xfd00 || offset >= 0xff20)