NIB disk image: added warning if any track's first D5-nibble isn't an addr prologue (#139)

This commit is contained in:
tomcw 2020-08-05 13:58:17 +01:00
parent d92635ffde
commit 3651ca0cb8

View File

@ -748,6 +748,31 @@ public:
return eMismatch;
m_uNumTracksInImage = dwImageSize / NIB1_TRACK_SIZE;
for (UINT track=0; track<m_uNumTracksInImage; track++) // Quick NIB sanity check (GH#139)
{
BYTE* pTrack = &pImage[track*NIB1_TRACK_SIZE];
for (UINT byte=0; byte<NIB1_TRACK_SIZE; byte++)
{
if (pTrack[byte] != 0xD5) // find 1st D5 in track
continue;
UINT prologueHdr = 0;
for (int i=0; i<3; i++)
{
prologueHdr <<= 8;
prologueHdr |= pTrack[byte++];
if (byte == NIB1_TRACK_SIZE) byte = 0;
}
if (prologueHdr != 0xD5AA96 && prologueHdr != 0xD5AAB5) // ProDOS/DOS 3.3 or DOS 3.2
{
std::string warning = "Warning: T$%02X: NIB image's first D5 header isn't D5AA96 or D5AAB5 (found: %06X)\n";
LogOutput(warning.c_str(), track, prologueHdr);
LogFileOutput(warning.c_str(), track, prologueHdr);
}
break;
}
}
return eMatch;
}