summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author Nigel Barnes <Pernod70@users.noreply.github.com>2018-04-21 18:10:33 +0100
committer Nigel Barnes <Pernod70@users.noreply.github.com>2018-04-21 18:13:19 +0100
commit2c1c6f3aabd432f55d1affe0a5fb2e8a9bb8e965 (patch)
tree3a03781ff820b50fad4bda3a6a2dc70bd66a056c
parenteda7537f381f139166785eae9ee4807f731d46ae (diff)
bbcm: Fixed paging in of Shadow RAM according to ACCCON.
-rw-r--r--src/mame/includes/bbc.h2
-rw-r--r--src/mame/machine/bbc.cpp31
2 files changed, 8 insertions, 25 deletions
diff --git a/src/mame/includes/bbc.h b/src/mame/includes/bbc.h
index 369fdb2edb1..8390a2faad7 100644
--- a/src/mame/includes/bbc.h
+++ b/src/mame/includes/bbc.h
@@ -130,8 +130,6 @@ public:
DECLARE_READ8_MEMBER(bbcm_acccon_r);
DECLARE_WRITE8_MEMBER(bbcm_acccon_w);
DECLARE_WRITE8_MEMBER(page_selectbm_w);
- DECLARE_READ8_MEMBER(bbc_memorybm2_r);
- DECLARE_WRITE8_MEMBER(bbc_memorybm2_w);
DECLARE_WRITE8_MEMBER(bbc_memorybm4_w);
DECLARE_WRITE8_MEMBER(bbc_memorybm5_w);
DECLARE_WRITE8_MEMBER(bbc_memorybm7_w);
diff --git a/src/mame/machine/bbc.cpp b/src/mame/machine/bbc.cpp
index 730a8e5de45..f4b14bd0102 100644
--- a/src/mame/machine/bbc.cpp
+++ b/src/mame/machine/bbc.cpp
@@ -233,16 +233,13 @@ WRITE8_MEMBER(bbc_state::bbc_memorybp6_w)
READ8_MEMBER(bbc_state::bbcm_fetch_r)
{
- if (offset >= 0xc000 && offset <= 0xdfff)
+ if (m_acccon_x || (m_acccon_e && offset >= 0xc000 && offset <= 0xdfff))
{
- if (m_acccon_e)
- {
- m_bank2->set_base(m_region_maincpu->base() + 0xb000);
- }
- else
- {
- m_bank2->set_base(m_region_maincpu->base() + 0x3000);
- }
+ m_bank2->set_base(m_region_maincpu->base() + 0xb000);
+ }
+ else
+ {
+ m_bank2->set_base(m_region_maincpu->base() + 0x3000);
}
return m_maincpu->space(AS_PROGRAM).read_byte(offset);
}
@@ -333,18 +330,6 @@ WRITE8_MEMBER(bbc_state::page_selectbm_w)
}
}
-WRITE8_MEMBER(bbc_state::bbc_memorybm2_w)
-{
- if (m_acccon_x || (m_acccon_e && m_vdusel))
- {
- m_region_maincpu->base()[offset + 0xb000] = data;
- }
- else
- {
- m_region_maincpu->base()[offset + 0x3000] = data;
- }
-}
-
WRITE8_MEMBER(bbc_state::bbc_memorybm4_w)
{
if (m_paged_ram)
@@ -1477,7 +1462,7 @@ image_init_result bbc_state::bbcm_load_cart(device_image_interface &image, gener
{
uint32_t filesize = image.length();
- if (filesize != 0x8000)
+ if (filesize > 0x8000)
{
image.seterror(IMAGE_ERROR_UNSPECIFIED, "Unsupported cartridge size");
return image_init_result::FAIL;
@@ -1492,7 +1477,7 @@ image_init_result bbc_state::bbcm_load_cart(device_image_interface &image, gener
uint32_t size_lo = image.get_software_region_length("lorom");
uint32_t size_hi = image.get_software_region_length("uprom");
- if (size_lo + size_hi != 0x8000)
+ if (size_lo + size_hi > 0x8000)
{
image.seterror(IMAGE_ERROR_UNSPECIFIED, "Unsupported cartridge size");
return image_init_result::FAIL;