(nw) zorba: adjusted to requirements

This commit is contained in:
Robbbert 2020-06-26 20:35:10 +10:00
parent 6bdc7cc979
commit 8a0531799d
2 changed files with 10 additions and 8 deletions

View File

@ -72,7 +72,7 @@ ToDo:
void zorba_state::zorba_mem(address_map &map) void zorba_state::zorba_mem(address_map &map)
{ {
map(0x0000, 0x3fff).ram().share("mainram").lr8(NAME([this] (offs_t offset) { if(m_rom_in_map) return m_rom[offset]; else return m_ram[offset]; })); map(0x0000, 0x3fff).ram().share("mainram").bankr("bank1");
map(0x4000, 0xffff).ram(); map(0x4000, 0xffff).ram();
} }
@ -275,11 +275,12 @@ void zorba_state::machine_start()
save_item(NAME(m_printer_select)); save_item(NAME(m_printer_select));
save_item(NAME(m_term_data)); save_item(NAME(m_term_data));
save_item(NAME(m_rom_in_map));
m_printer_prowriter = false; m_printer_prowriter = false;
m_printer_fault = 0; m_printer_fault = 0;
m_printer_select = 0; m_printer_select = 0;
m_bank1->configure_entry(0, m_ram);
m_bank1->configure_entry(1, m_rom);
} }
void zorba_state::machine_reset() void zorba_state::machine_reset()
@ -293,7 +294,7 @@ void zorba_state::machine_reset()
m_printer_prowriter = BIT(m_config_port->read(), 0); m_printer_prowriter = BIT(m_config_port->read(), 0);
m_pia0->cb1_w(m_printer_prowriter ? m_printer_select : m_printer_fault); m_pia0->cb1_w(m_printer_prowriter ? m_printer_select : m_printer_fault);
m_rom_in_map = true; m_bank1->set_entry(1);
m_maincpu->reset(); m_maincpu->reset();
} }
@ -306,25 +307,25 @@ void zorba_state::machine_reset()
uint8_t zorba_state::ram_r() uint8_t zorba_state::ram_r()
{ {
if (!machine().side_effects_disabled()) if (!machine().side_effects_disabled())
m_rom_in_map = false; m_bank1->set_entry(0);
return 0; return 0;
} }
void zorba_state::ram_w(uint8_t data) void zorba_state::ram_w(uint8_t data)
{ {
m_rom_in_map = false; m_bank1->set_entry(0);
} }
uint8_t zorba_state::rom_r() uint8_t zorba_state::rom_r()
{ {
if (!machine().side_effects_disabled()) if (!machine().side_effects_disabled())
m_rom_in_map = true; m_bank1->set_entry(1);
return 0; return 0;
} }
void zorba_state::rom_w(uint8_t data) void zorba_state::rom_w(uint8_t data)
{ {
m_rom_in_map = true; m_bank1->set_entry(1);
} }

View File

@ -29,6 +29,7 @@ public:
, m_config_port(*this, "CNF") , m_config_port(*this, "CNF")
, m_rom(*this, "maincpu") , m_rom(*this, "maincpu")
, m_ram(*this, "mainram") , m_ram(*this, "mainram")
, m_bank1(*this, "bank1")
, m_p_chargen(*this, "chargen") , m_p_chargen(*this, "chargen")
, m_maincpu(*this, "maincpu") , m_maincpu(*this, "maincpu")
, m_dma(*this, "dma") , m_dma(*this, "dma")
@ -94,6 +95,7 @@ private:
required_region_ptr<u8> m_rom; required_region_ptr<u8> m_rom;
required_shared_ptr<u8> m_ram; required_shared_ptr<u8> m_ram;
required_memory_bank m_bank1;
required_region_ptr<uint8_t> m_p_chargen; required_region_ptr<uint8_t> m_p_chargen;
required_device<cpu_device> m_maincpu; required_device<cpu_device> m_maincpu;
@ -124,7 +126,6 @@ private:
int m_printer_select; int m_printer_select;
uint8_t m_term_data; uint8_t m_term_data;
bool m_rom_in_map;
}; };
#endif // MAME_INCLUDES_ZORBA_H #endif // MAME_INCLUDES_ZORBA_H