diff --git a/source/CardManager.cpp b/source/CardManager.cpp index 5ae06174..67739753 100644 --- a/source/CardManager.cpp +++ b/source/CardManager.cpp @@ -160,6 +160,7 @@ void CardManager::RemoveInternal(UINT slot) break; } + UnregisterIoHandler(slot); delete m_slot[slot]; m_slot[slot] = NULL; } diff --git a/source/Configuration/PropertySheetHelper.cpp b/source/Configuration/PropertySheetHelper.cpp index 6f296976..475c7b44 100644 --- a/source/Configuration/PropertySheetHelper.cpp +++ b/source/Configuration/PropertySheetHelper.cpp @@ -28,6 +28,7 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA #include "../Windows/AppleWin.h" // g_nAppMode, g_uScrollLockToggle, sg_PropertySheet #include "../CardManager.h" +#include "../Memory.h" #include "../Disk.h" #include "../Log.h" #include "../Registry.h" @@ -130,6 +131,7 @@ void CPropertySheetHelper::SetSlot(UINT slot, SS_CARDTYPE newCardType) return; GetCardMgr().Insert(slot, newCardType); + GetCardMgr().GetRef(slot).InitializeIO(GetCxRomPeripheral()); } // Used by: diff --git a/source/Disk.cpp b/source/Disk.cpp index 65993c58..8dd5a6aa 100644 --- a/source/Disk.cpp +++ b/source/Disk.cpp @@ -74,10 +74,6 @@ Disk2InterfaceCard::Disk2InterfaceCard(UINT slot) : ResetLogicStateSequencer(); - // if created by user in Config->Disk, then MemInitializeIO() won't be called - if (GetCxRomPeripheral()) - InitializeIO(GetCxRomPeripheral()); // During regular start-up, Initialize() will be called later by MemInitializeIO() - // Debug: #if LOG_DISK_NIBBLES_USE_RUNTIME_VAR m_bLogDisk_NibblesRW = false; @@ -92,9 +88,6 @@ Disk2InterfaceCard::~Disk2InterfaceCard(void) { EjectDiskInternal(DRIVE_1); EjectDiskInternal(DRIVE_2); - - // if destroyed by user in Config->Disk, then ensure that old object's reference is removed - UnregisterIoHandler(m_slot); } bool Disk2InterfaceCard::GetEnhanceDisk(void) { return m_enhanceDisk; } diff --git a/source/Harddisk.cpp b/source/Harddisk.cpp index fe373b3e..67a96c19 100644 --- a/source/Harddisk.cpp +++ b/source/Harddisk.cpp @@ -143,19 +143,12 @@ HarddiskInterfaceCard::HarddiskInterfaceCard(UINT slot) : m_notBusyCycle = 0; m_saveDiskImage = true; // Save the DiskImage name to Registry - - // if created by user in Config->Disk, then MemInitializeIO() won't be called - if (GetCxRomPeripheral()) - InitializeIO(GetCxRomPeripheral()); // During regular start-up, Initialize() will be called later by MemInitializeIO() } HarddiskInterfaceCard::~HarddiskInterfaceCard(void) { CleanupDriveInternal(HARDDISK_1); CleanupDriveInternal(HARDDISK_2); - - // if destroyed by user in Config->Disk, then ensure that old object's reference is removed - UnregisterIoHandler(m_slot); } void HarddiskInterfaceCard::Reset(const bool powerCycle)