summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/machine/mbee.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/machine/mbee.cpp')
-rw-r--r--src/mame/machine/mbee.cpp55
1 files changed, 26 insertions, 29 deletions
diff --git a/src/mame/machine/mbee.cpp b/src/mame/machine/mbee.cpp
index 937e0c3f918..b86cb60b699 100644
--- a/src/mame/machine/mbee.cpp
+++ b/src/mame/machine/mbee.cpp
@@ -282,7 +282,6 @@ void mbee_state::setup_banks(uint8_t data, bool first_time, uint8_t b_mask)
uint8_t b_data = bitswap<8>(data, 7,5,3,2,4,6,1,0) & 0x3b; // arrange data bits to S0,S1,-,S4,S2,S3
uint8_t b_bank, b_byte, b_byte_t, b_addr, p_bank = 1;
uint16_t b_vid;
- char banktag[10];
if (first_time || (b_data != m_bank_array[0])) // if same data as last time, leave now
{
@@ -314,13 +313,12 @@ void mbee_state::setup_banks(uint8_t data, bool first_time, uint8_t b_mask)
}
else
{
- sprintf(banktag, "bankr%d", b_bank);
- mem.install_read_bank( b_vid, b_vid+0xfff, banktag );
+ mem.install_read_bank( b_vid, b_vid+0xfff, m_bankr[b_bank] );
if (!BIT(b_byte, 3))
- membank(banktag)->set_entry(64 + (b_bank & 3)); // read from rom
+ m_bankr[b_bank]->set_entry(64 + (b_bank & 3)); // read from rom
else
- membank(banktag)->set_entry((b_bank & 7) | ((b_byte & b_mask) << 3)); // ram
+ m_bankr[b_bank]->set_entry((b_bank & 7) | ((b_byte & b_mask) << 3)); // ram
}
}
p_bank++;
@@ -346,13 +344,12 @@ void mbee_state::setup_banks(uint8_t data, bool first_time, uint8_t b_mask)
}
else
{
- sprintf(banktag, "bankw%d", b_bank);
- mem.install_write_bank( b_vid, b_vid+0xfff, banktag );
+ mem.install_write_bank( b_vid, b_vid+0xfff, m_bankw[b_bank] );
if (!BIT(b_byte, 3))
- membank(banktag)->set_entry(64); // write to rom dummy area
+ m_bankw[b_bank]->set_entry(64); // write to rom dummy area
else
- membank(banktag)->set_entry((b_bank & 7) | ((b_byte & b_mask) << 3)); // ram
+ m_bankw[b_bank]->set_entry((b_bank & 7) | ((b_byte & b_mask) << 3)); // ram
}
}
p_bank++;
@@ -555,19 +552,19 @@ void mbee_state::init_mbee56()
// PP has 1024k which is 256 banks, but having 64 banks stops it crashing during the self-test. Need a schematic before we can fix it.
void mbee_state::init_mbee128()
{
- uint8_t *RAM = memregion("rams")->base();
- uint8_t *ROM = memregion("roms")->base();
- char banktag[10];
+ m_ram = make_unique_clear<u8[]>(0x40000);
+ m_dummy = std::make_unique<u8[]>(0x1000);
+ u8 *r = m_ram.get();
+ u8 *d = m_dummy.get();
+ u8 *m = memregion("maincpu")->base();
- for (uint8_t b_bank = 0; b_bank < 16; b_bank++)
+ for (u8 b_bank = 0; b_bank < 16; b_bank++)
{
- sprintf(banktag, "bankr%d", b_bank);
- membank(banktag)->configure_entries(0, 64, &RAM[0x0000], 0x1000); // RAM banks
- membank(banktag)->configure_entries(64, 4, &ROM[0x0000], 0x1000); // rom
+ m_bankr[b_bank]->configure_entries(0, 64, r, 0x1000); // RAM banks
+ m_bankr[b_bank]->configure_entries(64, 4, m, 0x1000); // rom
- sprintf(banktag, "bankw%d", b_bank);
- membank(banktag)->configure_entries(0, 64, &RAM[0x0000], 0x1000); // RAM banks
- membank(banktag)->configure_entries(64, 1, &ROM[0x4000], 0x1000); // dummy rom
+ m_bankw[b_bank]->configure_entries(0, 64, r, 0x1000); // RAM banks
+ m_bankw[b_bank]->configure_entry(64, d); // dummy rom
}
m_size = 0x8000;
@@ -576,19 +573,19 @@ void mbee_state::init_mbee128()
void mbee_state::init_mbee256()
{
- uint8_t *RAM = memregion("rams")->base();
- uint8_t *ROM = memregion("roms")->base();
- char banktag[10];
+ m_ram = make_unique_clear<u8[]>(0x40000);
+ m_dummy = std::make_unique<u8[]>(0x1000);
+ u8 *r = m_ram.get();
+ u8 *d = m_dummy.get();
+ u8 *m = memregion("maincpu")->base();
- for (uint8_t b_bank = 0; b_bank < 16; b_bank++)
+ for (u8 b_bank = 0; b_bank < 16; b_bank++)
{
- sprintf(banktag, "bankr%d", b_bank);
- membank(banktag)->configure_entries(0, 64, &RAM[0x0000], 0x1000); // RAM banks
- membank(banktag)->configure_entries(64, 4, &ROM[0x0000], 0x1000); // rom
+ m_bankr[b_bank]->configure_entries(0, 64, r, 0x1000); // RAM banks
+ m_bankr[b_bank]->configure_entries(64, 4, m, 0x1000); // rom
- sprintf(banktag, "bankw%d", b_bank);
- membank(banktag)->configure_entries(0, 64, &RAM[0x0000], 0x1000); // RAM banks
- membank(banktag)->configure_entries(64, 1, &ROM[0x4000], 0x1000); // dummy rom
+ m_bankw[b_bank]->configure_entries(0, 64, r, 0x1000); // RAM banks
+ m_bankw[b_bank]->configure_entry(64, d); // dummy rom
}
timer_set(attotime::from_hz(1), TIMER_MBEE_NEWKB); /* kick-start timer for kbd */