Modified memory interaction with NoSlotClock; pass internal ROM addresses $C3XX or $C8XX-$CFXX.

--HG--
extra : convert_revision : svn%3Affd33b8c-2492-42e0-bdc5-587b920b7d6d/trunk%4051018
This commit is contained in:
Sean Fausett 2010-09-06 02:32:57 +00:00
parent f67d464dc5
commit 8d302f35e9
3 changed files with 14 additions and 7 deletions

View File

@ -5,4 +5,4 @@
<Word>Alloc</Word>
</Recognized>
</Words>
</Dictionary>
</Dictionary>

View File

@ -21,4 +21,4 @@
<Word>UpRight</Word>
</Unrecognized>
</Words>
</Dictionary>
</Dictionary>

View File

@ -356,7 +356,7 @@ private int ReadIoRegionC3C3(int address)
{
SetRomC8CF(true); // $C3XX sets IntC8Rom; inhibits I/O Strobe' [5-28, 7-21]
}
return _noSlotClock.Read(address, (IsRomC1CFInternal || !IsRomC3C3External) ? _romInternalRegionC1CF[address - 0xC100] : Machine.Slot3.ReadIoRegionC1C7(address));
return (IsRomC1CFInternal || !IsRomC3C3External) ? _noSlotClock.Read(address, _romInternalRegionC1CF[address - 0xC100]) : Machine.Slot3.ReadIoRegionC1C7(address);
}
private int ReadIoRegionC8CF(int address)
@ -365,7 +365,7 @@ private int ReadIoRegionC8CF(int address)
{
SetRomC8CF(false); // $CFFF resets IntC8Rom [5-28, 7-21]
}
return (IsRomC1CFInternal || IsRomC8CFInternal) ? _romInternalRegionC1CF[address - 0xC100] : Machine.Slots[_slotRegionC8CF].ReadIoRegionC8CF(address);
return (IsRomC1CFInternal || IsRomC8CFInternal) ? _noSlotClock.Read(address, _romInternalRegionC1CF[address - 0xC100]) : Machine.Slots[_slotRegionC8CF].ReadIoRegionC8CF(address);
}
[SuppressMessage("Microsoft.Usage", "CA2233:OperationsShouldNotOverflow", MessageId = "address-512")]
@ -548,11 +548,14 @@ private void WriteIoRegionC3C3(int address, byte data)
{
SetRomC8CF(true); // $C3XX sets IntC8Rom; inhibits I/O Strobe' [5-28, 7-21]
}
else if (!IsRomC1CFInternal)
if (IsRomC1CFInternal || !IsRomC3C3External)
{
_noSlotClock.Write(address);
}
else
{
Machine.Slot3.WriteIoRegionC1C7(address, data);
}
_noSlotClock.Write(address);
}
private void WriteIoRegionC8CF(int address, byte data)
@ -561,7 +564,11 @@ private void WriteIoRegionC8CF(int address, byte data)
{
SetRomC8CF(false); // $CFFF resets IntC8Rom [5-28, 7-21]
}
if (!IsRomC1CFInternal && !IsRomC8CFInternal)
if (IsRomC1CFInternal || IsRomC8CFInternal)
{
_noSlotClock.Write(address);
}
else
{
Machine.Slots[_slotRegionC8CF].WriteIoRegionC8CF(address, data);
}