Only do Physical to Logical sector remapping if have a valid sector number
This commit is contained in:
parent
1d1d176b35
commit
e3ac70cc32
|
@ -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
|
||||
|
|
|
@ -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());
|
||||
|
|
Loading…
Reference in New Issue