mirror of
https://github.com/AppleWin/AppleWin.git
synced 2024-06-08 16:29:39 +00:00
Fix bugs found via test code
This commit is contained in:
parent
fc1ac3b8a7
commit
804b66221d
|
@ -109,8 +109,8 @@ BYTE __stdcall LanguageCardUnit::IO(WORD PC, WORD uAddr, BYTE bWrite, BYTE uValu
|
||||||
pLC->SetLastRamWrite( ((uAddr & 1) && !bWrite) ); // UTAIIe:5-23
|
pLC->SetLastRamWrite( ((uAddr & 1) && !bWrite) ); // UTAIIe:5-23
|
||||||
pLC->SetLCMemMode(memmode);
|
pLC->SetLCMemMode(memmode);
|
||||||
|
|
||||||
const bool bBankChanged = GetLastSlotToSetMainMemLC() != SLOT0;
|
const bool bCardChanged = GetLastSlotToSetMainMemLC() != SLOT0;
|
||||||
if (bBankChanged)
|
if (bCardChanged)
|
||||||
{
|
{
|
||||||
if (pLC->QueryType() == CT_LanguageCardIIe)
|
if (pLC->QueryType() == CT_LanguageCardIIe)
|
||||||
SetMemMainLanguageCard(NULL, SLOT0, true);
|
SetMemMainLanguageCard(NULL, SLOT0, true);
|
||||||
|
@ -125,11 +125,10 @@ BYTE __stdcall LanguageCardUnit::IO(WORD PC, WORD uAddr, BYTE bWrite, BYTE uValu
|
||||||
|
|
||||||
// IF THE MEMORY PAGING MODE HAS CHANGED, UPDATE OUR MEMORY IMAGES AND
|
// IF THE MEMORY PAGING MODE HAS CHANGED, UPDATE OUR MEMORY IMAGES AND
|
||||||
// WRITE TABLES.
|
// WRITE TABLES.
|
||||||
if ((lastmemmode != memmode) || bBankChanged)
|
if ((lastmemmode != memmode) || bCardChanged)
|
||||||
{
|
{
|
||||||
if (lastmemmode != memmode)
|
// NB. Always SetMemMode() - locally may be same, but card may've changed
|
||||||
SetMemMode((GetMemMode() & ~MF_LANGCARD_MASK) | (memmode & MF_LANGCARD_MASK));
|
SetMemMode((GetMemMode() & ~MF_LANGCARD_MASK) | (memmode & MF_LANGCARD_MASK));
|
||||||
|
|
||||||
MemUpdatePaging(0); // Initialize=0
|
MemUpdatePaging(0); // Initialize=0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -353,7 +352,8 @@ BYTE __stdcall Saturn128K::IO(WORD PC, WORD uAddr, BYTE bWrite, BYTE uValue, ULO
|
||||||
return bWrite ? 0 : MemReadFloatingBus(nExecutedCycles);
|
return bWrite ? 0 : MemReadFloatingBus(nExecutedCycles);
|
||||||
|
|
||||||
bool bBankChanged = false;
|
bool bBankChanged = false;
|
||||||
UINT memmode=0, lastmemmode=0;
|
UINT memmode = pLC->GetLCMemMode();
|
||||||
|
UINT lastmemmode = memmode;
|
||||||
|
|
||||||
if (uAddr & (1<<2))
|
if (uAddr & (1<<2))
|
||||||
{
|
{
|
||||||
|
@ -375,8 +375,6 @@ BYTE __stdcall Saturn128K::IO(WORD PC, WORD uAddr, BYTE bWrite, BYTE uValue, ULO
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
memmode = pLC->GetLCMemMode();
|
|
||||||
lastmemmode = memmode;
|
|
||||||
memmode &= ~(MF_BANK2 | MF_HIGHRAM);
|
memmode &= ~(MF_BANK2 | MF_HIGHRAM);
|
||||||
|
|
||||||
if (!(uAddr & 8))
|
if (!(uAddr & 8))
|
||||||
|
@ -407,9 +405,8 @@ BYTE __stdcall Saturn128K::IO(WORD PC, WORD uAddr, BYTE bWrite, BYTE uValue, ULO
|
||||||
// WRITE TABLES.
|
// WRITE TABLES.
|
||||||
if ((lastmemmode != memmode) || bBankChanged)
|
if ((lastmemmode != memmode) || bBankChanged)
|
||||||
{
|
{
|
||||||
if (lastmemmode != memmode)
|
// NB. Always SetMemMode() - locally may be same, but card or bank may've changed
|
||||||
SetMemMode((GetMemMode() & ~MF_LANGCARD_MASK) | (memmode & MF_LANGCARD_MASK));
|
SetMemMode((GetMemMode() & ~MF_LANGCARD_MASK) | (memmode & MF_LANGCARD_MASK));
|
||||||
|
|
||||||
MemUpdatePaging(0); // Initialize=0
|
MemUpdatePaging(0); // Initialize=0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user