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> <Word>Alloc</Word>
</Recognized> </Recognized>
</Words> </Words>
</Dictionary> </Dictionary>

View File

@ -21,4 +21,4 @@
<Word>UpRight</Word> <Word>UpRight</Word>
</Unrecognized> </Unrecognized>
</Words> </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] 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) private int ReadIoRegionC8CF(int address)
@ -365,7 +365,7 @@ private int ReadIoRegionC8CF(int address)
{ {
SetRomC8CF(false); // $CFFF resets IntC8Rom [5-28, 7-21] 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")] [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] 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); Machine.Slot3.WriteIoRegionC1C7(address, data);
} }
_noSlotClock.Write(address);
} }
private void WriteIoRegionC8CF(int address, byte data) 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] 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); Machine.Slots[_slotRegionC8CF].WriteIoRegionC8CF(address, data);
} }