diff --git a/source/Disk.cpp b/source/Disk.cpp index 1539167c..c3751a65 100644 --- a/source/Disk.cpp +++ b/source/Disk.cpp @@ -320,14 +320,23 @@ static void ReadTrack(const int iDrive) //=========================================================================== +void DiskFlushCurrentTrack(const int iDrive) +{ + Disk_t *pFloppy = &g_aFloppyDisk[iDrive]; + + if (pFloppy->trackimage && pFloppy->trackimagedirty) + WriteTrack(iDrive); +} + +//=========================================================================== + static void RemoveDisk(const int iDrive) { Disk_t *pFloppy = &g_aFloppyDisk[iDrive]; if (pFloppy->imagehandle) { - if (pFloppy->trackimage && pFloppy->trackimagedirty) - WriteTrack( iDrive); + DiskFlushCurrentTrack(iDrive); ImageClose(pFloppy->imagehandle); pFloppy->imagehandle = NULL; @@ -442,10 +451,7 @@ static void __stdcall DiskControlStepper(WORD, WORD address, BYTE, BYTE, ULONG u : MIN(nNumTracksInImage-1, fptr->phase >> 1); // (round half tracks down) if (newtrack != fptr->track) { - if (fptr->trackimage && fptr->trackimagedirty) - { - WriteTrack(currdrive); - } + DiskFlushCurrentTrack(currdrive); fptr->track = newtrack; fptr->trackimagedata = 0; } diff --git a/source/Disk.h b/source/Disk.h index 95d8f7e2..b803e24f 100644 --- a/source/Disk.h +++ b/source/Disk.h @@ -47,6 +47,7 @@ void DiskDestroy(void); // no, doesn't "destroy" the disk image. DiskIIManag void DiskBoot(void); void DiskEject(const int iDrive); +void DiskFlushCurrentTrack(const int iDrive); LPCTSTR DiskGetFullName(const int iDrive); LPCTSTR DiskGetFullDiskFilename(const int iDrive); diff --git a/source/Frame.cpp b/source/Frame.cpp index 09bcf2db..74e60576 100644 --- a/source/Frame.cpp +++ b/source/Frame.cpp @@ -2040,6 +2040,8 @@ void ProcessDiskPopupMenu(HWND hwnd, POINT pt, const int iDrive) "Please install CiderPress.\n" "Otherwise set the path to CiderPress from Configuration->Disk."; + DiskFlushCurrentTrack(iDrive); + //if(!filename1.compare("\"\"") == false) //Do not use this, for some reason it does not work!!! if(!filename1.compare(sFileNameEmpty) ) {