summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author arbee <rb6502@users.noreply.github.com>2016-01-03 17:09:48 -0500
committer arbee <rb6502@users.noreply.github.com>2016-01-03 17:09:48 -0500
commitbb22a6754ab6e989c4715dfa18b71d48b381fb2b (patch)
tree55a6f9e222397bc888b42129ef3fe69c1c6c8c79
parentef09a2723d8937f73531379f3b8a06b95e743648 (diff)
apple2e: fix $c800 arbitration, fixes IDE and SCSI cards among others. [R. Belmont]
-rw-r--r--src/mame/drivers/apple2e.cpp40
1 files changed, 38 insertions, 2 deletions
diff --git a/src/mame/drivers/apple2e.cpp b/src/mame/drivers/apple2e.cpp
index 465abdc9b80..99bc10dc341 100644
--- a/src/mame/drivers/apple2e.cpp
+++ b/src/mame/drivers/apple2e.cpp
@@ -314,6 +314,8 @@ public:
DECLARE_READ8_MEMBER(c400_int_bank_r);
DECLARE_WRITE8_MEMBER(c400_w);
DECLARE_READ8_MEMBER(c800_r);
+ DECLARE_READ8_MEMBER(c800_int_r);
+ DECLARE_READ8_MEMBER(c800_b2_int_r);
DECLARE_WRITE8_MEMBER(c800_w);
DECLARE_READ8_MEMBER(inh_r);
DECLARE_WRITE8_MEMBER(inh_w);
@@ -1963,6 +1965,40 @@ READ8_MEMBER(apple2e_state::c800_r)
return read_floatingbus();
}
+READ8_MEMBER(apple2e_state::c800_int_r)
+{
+ if ((m_isiicplus) && (offset >= 0x600))
+ {
+ return m_iicplus_ce00[offset-0x600];
+ }
+
+ if (offset == 0x7ff)
+ {
+ m_cnxx_slot = CNXX_UNCLAIMED;
+ update_slotrom_banks();
+ return 0xff;
+ }
+
+ return m_rom_ptr[0x800 + offset];
+}
+
+READ8_MEMBER(apple2e_state::c800_b2_int_r)
+{
+ if ((m_isiicplus) && (offset >= 0x600))
+ {
+ return m_iicplus_ce00[offset-0x600];
+ }
+
+ if (offset == 0x7ff)
+ {
+ m_cnxx_slot = CNXX_UNCLAIMED;
+ update_slotrom_banks();
+ return 0xff;
+ }
+
+ return m_rom_ptr[0x4800 + offset];
+}
+
WRITE8_MEMBER(apple2e_state::c800_w)
{
if ((m_isiicplus) && (offset >= 0x600))
@@ -2385,8 +2421,8 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( c800bank_map, AS_PROGRAM, 8, apple2e_state )
AM_RANGE(0x0000, 0x07ff) AM_READWRITE(c800_r, c800_w)
- AM_RANGE(0x0800, 0x0fff) AM_ROM AM_REGION("maincpu", 0x800)
- AM_RANGE(0x1000, 0x17ff) AM_ROM AM_REGION("maincpu", 0x4800)
+ AM_RANGE(0x0800, 0x0fff) AM_READWRITE(c800_int_r, c800_w)
+ AM_RANGE(0x1000, 0x17ff) AM_READWRITE(c800_b2_int_r, c800_w)
ADDRESS_MAP_END
static ADDRESS_MAP_START( inhbank_map, AS_PROGRAM, 8, apple2e_state )