diff --git a/src/com/bytezone/diskbrowser/applefile/HiResImage.java b/src/com/bytezone/diskbrowser/applefile/HiResImage.java index c719345..a61879f 100644 --- a/src/com/bytezone/diskbrowser/applefile/HiResImage.java +++ b/src/com/bytezone/diskbrowser/applefile/HiResImage.java @@ -29,7 +29,7 @@ public abstract class HiResImage extends AbstractFile // $08 FOT <$4000 Apple II Graphics File - ??? // $08 FOT $4000 Packed Hi-Res file - ??? // $08 FOT $4001 Packed Double Hi-Res file - ??? - // $08 FOT $8066 Fadden Hi-res + // $08 FOT $8066 Fadden Hi-res - FaddenHiResImage // * $C0 PNT $0000 Paintworks Packed Super Hi-Res - SHRPictureFile2 // * $C0 PNT $0001 Packed IIGS Super Hi-Res Image - SHRPictureFile2 @@ -488,6 +488,8 @@ public abstract class HiResImage extends AbstractFile public static boolean isAPP (byte[] buffer) { + if (buffer.length < 4) + return false; return buffer[0] == (byte) 0xC1 && buffer[1] == (byte) 0xD0 && buffer[2] == (byte) 0xD0 && buffer[3] == 0; } diff --git a/src/com/bytezone/diskbrowser/disk/DataDisk.java b/src/com/bytezone/diskbrowser/disk/DataDisk.java index 9ff9b44..6394195 100755 --- a/src/com/bytezone/diskbrowser/disk/DataDisk.java +++ b/src/com/bytezone/diskbrowser/disk/DataDisk.java @@ -1,5 +1,6 @@ package com.bytezone.diskbrowser.disk; +import java.util.ArrayList; import java.util.List; import com.bytezone.diskbrowser.gui.DataSource; @@ -35,7 +36,7 @@ public class DataDisk extends AbstractFormattedDisk @Override public List getFileSectors (int fileNo) { - return null; + return new ArrayList<> (); } // no files on data disks diff --git a/src/com/bytezone/diskbrowser/disk/UnknownDisk.java b/src/com/bytezone/diskbrowser/disk/UnknownDisk.java new file mode 100644 index 0000000..25d12bd --- /dev/null +++ b/src/com/bytezone/diskbrowser/disk/UnknownDisk.java @@ -0,0 +1,20 @@ +package com.bytezone.diskbrowser.disk; + +import java.util.ArrayList; +import java.util.List; + +public class UnknownDisk extends AbstractFormattedDisk +{ + // could arrange for the blocks to appear as a question mark + + public UnknownDisk (AppleDisk disk) + { + super (disk); + } + + @Override + public List getFileSectors (int fileNo) + { + return new ArrayList<> (); + } +} diff --git a/src/com/bytezone/diskbrowser/dos/AbstractCatalogEntry.java b/src/com/bytezone/diskbrowser/dos/AbstractCatalogEntry.java index 67a4684..d2928dc 100644 --- a/src/com/bytezone/diskbrowser/dos/AbstractCatalogEntry.java +++ b/src/com/bytezone/diskbrowser/dos/AbstractCatalogEntry.java @@ -231,6 +231,7 @@ abstract class AbstractCatalogEntry implements AppleFileSource byte[] buf = new byte[exactBuffer.length - 4]; System.arraycopy (exactBuffer, 4, buf, 0, buf.length); appleFile = new BasicProgram (name, buf); + System.out.printf ("Possible basic binary: %s%n", name); } else { diff --git a/src/com/bytezone/diskbrowser/nib/DiskAddressField.java b/src/com/bytezone/diskbrowser/nib/DiskAddressField.java index 4d14d65..1dd2c8d 100644 --- a/src/com/bytezone/diskbrowser/nib/DiskAddressField.java +++ b/src/com/bytezone/diskbrowser/nib/DiskAddressField.java @@ -14,6 +14,10 @@ class DiskAddressField track = decode4and4 (buffer, 2); sector = decode4and4 (buffer, 4); checksum = decode4and4 (buffer, 6); + + // if (track == 0) + // for (int i = 0; i < 8; i++) + // System.out.printf ("%02X ", buffer[i]); } // ---------------------------------------------------------------------------------// diff --git a/src/com/bytezone/diskbrowser/nib/MC3470.java b/src/com/bytezone/diskbrowser/nib/MC3470.java index 8920f3c..539b826 100644 --- a/src/com/bytezone/diskbrowser/nib/MC3470.java +++ b/src/com/bytezone/diskbrowser/nib/MC3470.java @@ -3,8 +3,6 @@ package com.bytezone.diskbrowser.nib; import java.util.ArrayList; import java.util.List; -import com.bytezone.diskbrowser.disk.*; - class MC3470 { private static final int MAX_DATA = 999; @@ -148,6 +146,9 @@ class MC3470 if (dataPtr < 3) // not enough bytes to test return; + // System.out.printf ("checking %02X %02X %02X%n", dataBuffer[dataPtr - 3], + // dataBuffer[dataPtr - 2], dataBuffer[dataPtr - 1]); + if (match (address16prologue) || match (address16prologueX)) { diskReader = diskReader16Sector; diff --git a/src/com/bytezone/diskbrowser/prodos/FileEntry.java b/src/com/bytezone/diskbrowser/prodos/FileEntry.java index 01fdd22..102568c 100755 --- a/src/com/bytezone/diskbrowser/prodos/FileEntry.java +++ b/src/com/bytezone/diskbrowser/prodos/FileEntry.java @@ -356,10 +356,12 @@ class FileEntry extends CatalogEntry implements ProdosConstants case FILE_TYPE_FOT: if (auxType == 0x8066) // Fadden - // file = new DefaultAppleFile (name, exactBuffer); file = new FaddenHiResImage (name, exactBuffer, fileType, auxType, endOfFile); else + { + System.out.println ("Unwritten FOT: " + name); file = new DefaultAppleFile (name, exactBuffer); + } break; case FILE_TYPE_FONT: