Only do Physical to Logical sector remapping if have a valid sector number

This commit is contained in:
michaelangel007 2023-04-25 23:42:42 -07:00
parent 1d1d176b35
commit e3ac70cc32
2 changed files with 7 additions and 4 deletions

View File

@ -116,16 +116,16 @@ void Disk2InterfaceCard::GetLastReadTrackSector(const int drive, int& track, int
track = m_floppyDrive[drive].m_LastReadTrackSector[0];
int physical = m_floppyDrive[drive].m_LastReadTrackSector[1];
if (physical >= 0)
// Some disk images have bogus sector numbers
if ((physical >= 0) && (physical <= 15))
{
const int PhysicalToLogicalSectorNumber[16] = {0x00,0x07,0x0E,0x06,0x0D,0x05,0x0C,0x04, 0x0B,0x03,0x0A,0x02,0x09,0x01,0x08,0x0F};
sector = PhysicalToLogicalSectorNumber[physical];
}
else
sector = -1;
sector = physical;
assert(track <= 80);
assert(physical <= 16);
}
int Disk2InterfaceCard::GetCurrentDrive(void) { return m_currDrive; }
@ -1123,7 +1123,8 @@ void __stdcall Disk2InterfaceCard::ReadWrite(WORD pc, WORD addr, BYTE bWrite, BY
}
m_formatTrack.DecodeLatchNibbleRead(m_floppyLatch);
pDrive->SetLastReadTrackSector(m_formatTrack.GetLastReadVolumeTrackSectorChecksum());
BYTE *VolTrkSecChk = m_formatTrack.GetLastReadVolumeTrackSectorChecksum();
pDrive->SetLastReadTrackSector(VolTrkSecChk);
#endif
}
else if (!pFloppy->m_bWriteProtected) // && m_seqFunc.writeMode

View File

@ -270,6 +270,8 @@ void FormatTrack::DecodeLatchNibble(BYTE floppylatch, bool bIsWrite, bool bIsSyn
BYTE addrPrologue = m_bAddressPrologueIsDOS3_2 ? (BYTE)kADDR_PROLOGUE_DOS3_2 : (BYTE)kADDR_PROLOGUE_DOS3_3;
m_strReadD5AAxxDetected = StrFormat("read D5AA%02X detected - Vol:%02X Trk:%02X Sec:%02X Chk:%02X %s",
addrPrologue, m_VolTrkSecChk[0], m_VolTrkSecChk[1], m_VolTrkSecChk[2], m_VolTrkSecChk[3], chk?"":"(bad)");
// NOTE: We can NOT: assert(m_VolTrkSecChk[2] <= 0xF);
// Since some disks have bogus sector numbers: PLASMA2-SYS.PO
if (!m_bSuppressReadD5AAxxDetected)
{
LOG_DISK("%s\r\n", m_strReadD5AAxxDetected.c_str());