From 99bbd69878563a764b6724fd49d3d5d553d90f77 Mon Sep 17 00:00:00 2001 From: Denis Molony Date: Fri, 25 Jan 2019 17:06:31 +1100 Subject: [PATCH] more DOS 4.1 testing --- src/com/bytezone/diskbrowser/disk/AppleDiskAddress.java | 6 +++++- src/com/bytezone/diskbrowser/disk/DiskFactory.java | 1 + .../bytezone/diskbrowser/dos/AbstractCatalogEntry.java | 4 +++- src/com/bytezone/diskbrowser/dos/CatalogEntry.java | 8 +++++--- src/com/bytezone/diskbrowser/utilities/Utility.java | 2 +- 5 files changed, 15 insertions(+), 6 deletions(-) diff --git a/src/com/bytezone/diskbrowser/disk/AppleDiskAddress.java b/src/com/bytezone/diskbrowser/disk/AppleDiskAddress.java index 7138678..4c42dcf 100755 --- a/src/com/bytezone/diskbrowser/disk/AppleDiskAddress.java +++ b/src/com/bytezone/diskbrowser/disk/AppleDiskAddress.java @@ -40,7 +40,11 @@ public class AppleDiskAddress implements DiskAddress @Override public boolean matches (DiskAddress that) { - return that != null && this.block == that.getBlock (); + if (that == null) + return false; + // if (zeroFlag != ((AppleDiskAddress) that).zeroFlag) + // return false; + return this.block == that.getBlock (); } @Override diff --git a/src/com/bytezone/diskbrowser/disk/DiskFactory.java b/src/com/bytezone/diskbrowser/disk/DiskFactory.java index 5d2d0c9..a4e2628 100755 --- a/src/com/bytezone/diskbrowser/disk/DiskFactory.java +++ b/src/com/bytezone/diskbrowser/disk/DiskFactory.java @@ -471,6 +471,7 @@ public class DiskFactory } catch (Exception e) { + e.printStackTrace (); } if (debug) System.out.println (" not a DOS disk"); diff --git a/src/com/bytezone/diskbrowser/dos/AbstractCatalogEntry.java b/src/com/bytezone/diskbrowser/dos/AbstractCatalogEntry.java index 78d8ae9..e37e028 100644 --- a/src/com/bytezone/diskbrowser/dos/AbstractCatalogEntry.java +++ b/src/com/bytezone/diskbrowser/dos/AbstractCatalogEntry.java @@ -64,7 +64,9 @@ abstract class AbstractCatalogEntry implements AppleFileSource System.out.println ("Unknown file type : " + type); name = getName ("", entryBuffer); - lastModified = Utility.getDateTime (entryBuffer, 0x1B); + if (dosDisk.getVersion () >= 0x41) + lastModified = Utility.getDateTime (entryBuffer, 0x1B); + // CATALOG command only formats the LO byte - see Beneath Apple DOS pp4-6 String base = String.format ("%s%s %03d ", (locked) ? "*" : " ", getFileType (), (entryBuffer[33] & 0xFF)); diff --git a/src/com/bytezone/diskbrowser/dos/CatalogEntry.java b/src/com/bytezone/diskbrowser/dos/CatalogEntry.java index 1f12940..09cc8dc 100644 --- a/src/com/bytezone/diskbrowser/dos/CatalogEntry.java +++ b/src/com/bytezone/diskbrowser/dos/CatalogEntry.java @@ -86,7 +86,8 @@ class CatalogEntry extends AbstractCatalogEntry break; } - if (thisDA.matches (da)) + if (thisDA.matches (da) && ((AppleDiskAddress) thisDA) + .zeroFlag () == ((AppleDiskAddress) da).zeroFlag ()) { System.out.printf ("Next T/S list in sector %s points to itself%n", thisDA); break; @@ -133,10 +134,10 @@ class CatalogEntry extends AbstractCatalogEntry String lengthText = length == 0 ? "" : String.format ("$%4X %,6d", length, length); String message = ""; String lockedFlag = (locked) ? "*" : " "; + if (dosDisk.dosVTOCSector.dosVersion >= 0x41) - { message = lastModified.toString ().replace ('T', ' '); - } + if (reportedSize != actualSize) message += "Bad size (" + reportedSize + ") "; if (dataSectors.size () == 0) @@ -148,6 +149,7 @@ class CatalogEntry extends AbstractCatalogEntry tsSectors.size (), (dataSectors.size () - textFileGaps), message.trim ()); if (actualSize == 0) text = text.substring (0, 50); + return text; } } \ No newline at end of file diff --git a/src/com/bytezone/diskbrowser/utilities/Utility.java b/src/com/bytezone/diskbrowser/utilities/Utility.java index 6089b18..47d42cc 100644 --- a/src/com/bytezone/diskbrowser/utilities/Utility.java +++ b/src/com/bytezone/diskbrowser/utilities/Utility.java @@ -72,7 +72,7 @@ public class Utility LocalDateTime.of (val[3] + 2000, val[5], val[4], val[2], val[1], val[0]); return date; } - catch (DateTimeException e) + catch (DateTimeException | NumberFormatException e) { return null; }