. Fixed #309: Support 6522 TIMER1 at $Cs80 as in interrupt source

. Fixed save-state v2 bug where Mockingboard's card ROM was erroneously mapped in (instead of internal $C100-CFFF ROM)
. Added Cybernoid-TimerAtC480.aws.yaml to test both
This commit is contained in:
tomcw 2016-09-08 22:36:16 +01:00
parent efcf06c285
commit cf0cd37d9e
4 changed files with 13 additions and 2 deletions

View File

@ -1685,6 +1685,14 @@ LPVOID MemGetSlotParameters(UINT uSlot)
//===========================================================================
void MemLoadSnapshot_SetSlotCxRom(void)
{
if (!SW_SLOTCXROM)
IoHandlerCardsOut();
}
//===========================================================================
// NB. Don't need to save 'modechanging', as this is just an optimisation to save calling UpdatePaging() twice.
// . If we were to save the state when 'modechanging' is set, then on restoring the state, the 6502 code will immediately update the read memory mode.
// . This will work correctly.

View File

@ -54,6 +54,7 @@ void MemReset ();
void MemResetPaging ();
void MemUpdatePaging(BOOL initialize);
LPVOID MemGetSlotParameters (UINT uSlot);
void MemLoadSnapshot_SetSlotCxRom(void);
void MemSetSnapshot_v1(const DWORD MemMode, const BOOL LastWriteRam, const BYTE* const pMemMain, const BYTE* const pMemAux);
std::string MemGetSnapshotUnitAuxSlotName(void);
void MemSaveSnapshot(class YamlSaveHelper& yamlSaveHelper);

View File

@ -221,8 +221,8 @@ static void Votrax_Write(BYTE nDevice, BYTE nValue);
static void StartTimer(SY6522_AY8910* pMB)
{
if((pMB->nAY8910Number & 1) != SY6522_DEVICE_A)
return;
// if((pMB->nAY8910Number & 1) != SY6522_DEVICE_A)
// return;
if((pMB->sy6522.IER & IxR_TIMER1) == 0x00)
return;

View File

@ -515,6 +515,8 @@ static void Snapshot_LoadState_v2(void)
MemInitializeCustomF8ROM();
MemInitializeIO();
MemLoadSnapshot_SetSlotCxRom(); // Remove the cards' ROMs at $Csnn if internal ROM is enabled
MemUpdatePaging(TRUE);
// g_Apple2Type may've changed: so redraw frame (title, buttons, leds, etc)