check DOS format bug
This commit is contained in:
parent
26d218621b
commit
697c164aee
|
@ -395,7 +395,8 @@ public class DosDisk extends AbstractFormattedDisk
|
|||
if (debug)
|
||||
System.out.printf ("Catalog blocks: %s%n", catalogBlocks);
|
||||
|
||||
disk.setDosVersion (version);
|
||||
if (catalogBlocks > 0)
|
||||
disk.setDosVersion (version);
|
||||
return catalogBlocks;
|
||||
}
|
||||
|
||||
|
@ -403,6 +404,13 @@ public class DosDisk extends AbstractFormattedDisk
|
|||
private static int countCatalogBlocks (AppleDisk disk, byte[] buffer)
|
||||
// ---------------------------------------------------------------------------------//
|
||||
{
|
||||
if (!disk.isValidAddress (buffer[1], buffer[2]))
|
||||
{
|
||||
if (debug)
|
||||
System.out.printf ("Invalid address1: %02X %02X%n", buffer[1], buffer[2]);
|
||||
return 0;
|
||||
}
|
||||
|
||||
DiskAddress catalogStart = disk.getDiskAddress (buffer[1], buffer[2]);
|
||||
DiskAddress da = disk.getDiskAddress (catalogStart.getBlockNo ());
|
||||
List<DiskAddress> catalogAddresses = new ArrayList<> ();
|
||||
|
@ -430,14 +438,13 @@ public class DosDisk extends AbstractFormattedDisk
|
|||
if (!disk.isValidAddress (buffer[1], buffer[2]))
|
||||
{
|
||||
if (debug)
|
||||
System.out.printf ("Invalid address: %02X %02X%n", buffer[1], buffer[2]);
|
||||
System.out.printf ("Invalid address2: %02X %02X%n", buffer[1], buffer[2]);
|
||||
return catalogAddresses.size ();
|
||||
}
|
||||
|
||||
catalogAddresses.add (da);
|
||||
|
||||
da = disk.getDiskAddress (buffer[1], buffer[2]);
|
||||
|
||||
} while (!da.isZero ());
|
||||
|
||||
if (debug)
|
||||
|
|
|
@ -108,7 +108,6 @@ public class PascalDisk extends AbstractFormattedDisk
|
|||
addresses.add (disk.getDiskAddress (i));
|
||||
buffer = disk.readBlocks (addresses);
|
||||
|
||||
// loop through each catalog entry (what if there are deleted files?)
|
||||
for (int i = 1; i <= volumeEntry.totalFiles; i++)
|
||||
{
|
||||
int ptr = i * CATALOG_ENTRY_SIZE;
|
||||
|
@ -179,11 +178,11 @@ public class PascalDisk extends AbstractFormattedDisk
|
|||
}
|
||||
|
||||
int blocks = Utility.intValue (buffer[14], buffer[15]);
|
||||
if (blocks > 280)
|
||||
if (blocks != 280 && blocks != 1600)
|
||||
{
|
||||
if (debug)
|
||||
System.out.printf ("Blocks > 280: %d%n", blocks);
|
||||
// return false;
|
||||
return false;
|
||||
}
|
||||
|
||||
List<DiskAddress> addresses = new ArrayList<> ();
|
||||
|
|
Loading…
Reference in New Issue