mirror of
https://github.com/dmolony/DiskBrowser.git
synced 2024-11-29 11:49:29 +00:00
tidying
This commit is contained in:
parent
77cb5336e0
commit
f782427d74
@ -139,12 +139,22 @@ public class BasicProgram extends AbstractFile
|
||||
// (see SEA BATTLE on DISK283.DSK)
|
||||
if (subline.is (TOKEN_REM) && lineText.length () > wrapRemAt + 4)
|
||||
{
|
||||
// System.out.println (lineText.length ());
|
||||
String copy = lineText.substring (4);
|
||||
text.append ("REM ");
|
||||
int inset = text.length ();
|
||||
int inset = text.length () + 1;
|
||||
List<String> remarks = splitRemark (copy, wrapRemAt);
|
||||
boolean first = true;
|
||||
for (String remark : remarks)
|
||||
text.append (" ".substring (0, inset) + remark);
|
||||
{
|
||||
if (first)
|
||||
{
|
||||
first = false;
|
||||
text.append (remark);
|
||||
}
|
||||
else
|
||||
text.append ("\n ".substring (0, inset) + remark);
|
||||
}
|
||||
}
|
||||
else
|
||||
text.append (lineText);
|
||||
@ -268,14 +278,12 @@ public class BasicProgram extends AbstractFile
|
||||
int max = Math.min (wrapLength, remark.length () - 1);
|
||||
while (max > 0 && remark.charAt (max) != ' ')
|
||||
--max;
|
||||
// System.out.println (remark.substring (0, max));
|
||||
remarks.add (remark.substring (0, max) + "\n");
|
||||
if (max == 0)
|
||||
break;
|
||||
remark = remark.substring (max + 1);
|
||||
remarks.add (remark.substring (0, max));
|
||||
remark = remark.substring (max);
|
||||
}
|
||||
remarks.add (remark);
|
||||
// System.out.println (remark);
|
||||
return remarks;
|
||||
}
|
||||
|
||||
|
@ -7,11 +7,6 @@ public class OriginalHiResImage extends HiResImage
|
||||
{
|
||||
private static final int WHITE = 0xFFFFFF;
|
||||
private static final int BLACK = 0x000000;
|
||||
// private static final int RED = 0xFF0000;
|
||||
// private static final int GREEN = 0x00CC00;
|
||||
// private static final int BLUE = 0x0000FF;
|
||||
// private static final int VIOLET = 0xBB66FF;
|
||||
// private static final int[][] palette = { { VIOLET, GREEN }, { BLUE, RED } };
|
||||
private static final int[][] paletteTable = { { 9, 6 }, { 12, 3 } };
|
||||
|
||||
private static boolean matchColourBits = false;
|
||||
@ -42,6 +37,9 @@ public class OriginalHiResImage extends HiResImage
|
||||
// createImage ();
|
||||
}
|
||||
|
||||
// https://github.com/Michaelangel007/apple2_hgr_font_tutorial
|
||||
// hgr[ y ] = 0x2000 + (y/64)*0x28 + (y%8)*0x400 + ((y/8)&7)*0x80;
|
||||
|
||||
@Override
|
||||
protected void createMonochromeImage ()
|
||||
{
|
||||
|
@ -83,31 +83,30 @@ public abstract class AbstractSector implements DataSource
|
||||
return panel;
|
||||
}
|
||||
|
||||
protected void addText (StringBuilder text, byte[] b, int offset, int size, String desc)
|
||||
protected void addText (StringBuilder text, byte[] buffer, int offset, int size,
|
||||
String desc)
|
||||
{
|
||||
if ((offset + size - 1) > b.length)
|
||||
{
|
||||
// System.out.printf ("Offset : %d, Size : %d, Buffer : %d%n", offset, size, buffer.length);
|
||||
if ((offset + size - 1) > buffer.length)
|
||||
return;
|
||||
}
|
||||
|
||||
switch (size)
|
||||
{
|
||||
case 1:
|
||||
text.append (
|
||||
String.format ("%03X %02X %s%n", offset, b[offset], desc));
|
||||
text.append (String.format ("%03X %02X %s%n", offset,
|
||||
buffer[offset], desc));
|
||||
break;
|
||||
case 2:
|
||||
text.append (String.format ("%03X-%03X %02X %02X %s%n", offset,
|
||||
offset + 1, b[offset], b[offset + 1], desc));
|
||||
offset + 1, buffer[offset], buffer[offset + 1], desc));
|
||||
break;
|
||||
case 3:
|
||||
text.append (String.format ("%03X-%03X %02X %02X %02X %s%n", offset,
|
||||
offset + 2, b[offset], b[offset + 1], b[offset + 2], desc));
|
||||
offset + 2, buffer[offset], buffer[offset + 1], buffer[offset + 2], desc));
|
||||
break;
|
||||
case 4:
|
||||
text.append (String.format ("%03X-%03X %02X %02X %02X %02X %s%n", offset,
|
||||
offset + 3, b[offset], b[offset + 1], b[offset + 2], b[offset + 3], desc));
|
||||
offset + 3, buffer[offset], buffer[offset + 1], buffer[offset + 2],
|
||||
buffer[offset + 3], desc));
|
||||
break;
|
||||
default:
|
||||
System.out.println ("Invalid length : " + size);
|
||||
|
@ -533,13 +533,14 @@ public class DiskFactory
|
||||
private static FormattedDisk check2mgDisk (File file)
|
||||
{
|
||||
if (debug)
|
||||
System.out.println ("Checking Prodos 2mg disk");
|
||||
System.out.println ("Checking 2mg disk");
|
||||
|
||||
try
|
||||
{
|
||||
AppleDisk disk = new AppleDisk (file, 0, 0);
|
||||
if (disk.getTotalBlocks () > 0 && ProdosDisk.isCorrectFormat (disk))
|
||||
return new ProdosDisk (disk);
|
||||
// should check for DOS, but AppleDisk assumes 2mg has 512 byte blocks
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
|
@ -45,6 +45,14 @@ class DosVTOCSector extends AbstractSector
|
||||
addText (text, buffer, 3, 1, "DOS release number");
|
||||
addText (text, buffer, 4, 2, "Not used");
|
||||
addTextAndDecimal (text, buffer, 6, 1, "Diskette volume");
|
||||
addText (text, buffer, 7, 4, "Not used");
|
||||
addText (text, buffer, 11, 4, "Not used");
|
||||
addText (text, buffer, 15, 4, "Not used");
|
||||
addText (text, buffer, 19, 4, "Not used");
|
||||
addText (text, buffer, 23, 4, "Not used");
|
||||
addText (text, buffer, 27, 4, "Not used");
|
||||
addText (text, buffer, 31, 4, "Not used");
|
||||
addText (text, buffer, 35, 4, "Not used");
|
||||
addTextAndDecimal (text, buffer, 39, 1, "Maximum TS pairs");
|
||||
addText (text, buffer, 40, 4, "Not used");
|
||||
addText (text, buffer, 44, 4, "Not used");
|
||||
|
@ -18,7 +18,7 @@ import com.bytezone.diskbrowser.gui.DiskLayoutPanel.LayoutDetails;
|
||||
|
||||
class DiskLegendPanel extends JPanel
|
||||
{
|
||||
private static final int LEFT = 10;
|
||||
private static final int LEFT = 3;
|
||||
private static final int TOP = 10;
|
||||
|
||||
private FormattedDisk disk;
|
||||
@ -69,7 +69,7 @@ class DiskLegendPanel extends JPanel
|
||||
|
||||
for (SectorType type : disk.getSectorTypeList ())
|
||||
{
|
||||
int x = LEFT + (count % 2 == 0 ? 0 : 145);
|
||||
int x = LEFT + (count % 2 == 0 ? 0 : 155);
|
||||
int y = TOP + count++ / 2 * lineHeight;
|
||||
|
||||
// draw border
|
||||
|
@ -128,6 +128,9 @@ public class PascalDisk extends AbstractFormattedDisk
|
||||
public static boolean isCorrectFormat (AppleDisk disk, boolean debug)
|
||||
{
|
||||
disk.setInterleave (1); // should only ever be Prodos
|
||||
if (checkFormat (disk, debug))
|
||||
return true;
|
||||
disk.setInterleave (0); // SANE Disk 2.po
|
||||
if (checkFormat (disk, debug))
|
||||
return true;
|
||||
return false;
|
||||
|
@ -49,7 +49,7 @@ class FileEntry extends CatalogEntry implements ProdosConstants
|
||||
modified = HexFormatter.getAppleDate (entryBuffer, 0x21);
|
||||
headerPointer = HexFormatter.unsignedShort (entryBuffer, 0x25);
|
||||
|
||||
if (isGSOSFile ()) // I think this is wrong
|
||||
if (isGSOSFile ()) // I think this is wrong
|
||||
System.out.printf ("************************************ %s is GS/OS%n", name);
|
||||
|
||||
switch (storageType)
|
||||
@ -74,20 +74,7 @@ class FileEntry extends CatalogEntry implements ProdosConstants
|
||||
break;
|
||||
|
||||
case GSOS_EXTENDED_FILE:
|
||||
parentDisk.setSectorType (keyPtr, parentDisk.extendedKeySector);
|
||||
indexBlocks.add (disk.getDiskAddress (keyPtr));
|
||||
|
||||
byte[] buffer2 = disk.readSector (keyPtr); // data fork and resource fork
|
||||
|
||||
// read 2 mini entries (data fork / resource fork)
|
||||
for (int i = 0; i < 512; i += 256)
|
||||
{
|
||||
int storageType = buffer2[i] & 0x0F;
|
||||
int keyBlock = HexFormatter.unsignedShort (buffer2, i + 1);
|
||||
int eof =
|
||||
HexFormatter.intValue (buffer2[i + 3], buffer2[i + 4], buffer2[i + 5]);
|
||||
addDataBlocks (storageType, keyBlock);
|
||||
}
|
||||
readForks ();
|
||||
break;
|
||||
|
||||
case SUBDIRECTORY:
|
||||
@ -102,6 +89,8 @@ class FileEntry extends CatalogEntry implements ProdosConstants
|
||||
|
||||
case PASCAL_ON_PROFILE:
|
||||
indexBlocks.add (disk.getDiskAddress (keyPtr));
|
||||
System.out.println ("PASCAL on PROFILE: " + name);
|
||||
// are these blocks guaranteed to be contiguous?
|
||||
break;
|
||||
|
||||
default:
|
||||
@ -109,6 +98,23 @@ class FileEntry extends CatalogEntry implements ProdosConstants
|
||||
}
|
||||
}
|
||||
|
||||
private void readForks ()
|
||||
{
|
||||
parentDisk.setSectorType (keyPtr, parentDisk.extendedKeySector);
|
||||
indexBlocks.add (disk.getDiskAddress (keyPtr));
|
||||
|
||||
byte[] buffer2 = disk.readSector (keyPtr); // data fork and resource fork
|
||||
|
||||
// read 2 mini entries (data fork / resource fork)
|
||||
for (int i = 0; i < 512; i += 256)
|
||||
{
|
||||
int storageType = buffer2[i] & 0x0F;
|
||||
int keyBlock = HexFormatter.unsignedShort (buffer2, i + 1);
|
||||
int eof = HexFormatter.intValue (buffer2[i + 3], buffer2[i + 4], buffer2[i + 5]);
|
||||
addDataBlocks (storageType, keyBlock);
|
||||
}
|
||||
}
|
||||
|
||||
private void addDataBlocks (int storageType, int keyPtr)
|
||||
{
|
||||
DiskAddress emptyDiskAddress = disk.getDiskAddress (0);
|
||||
@ -188,7 +194,10 @@ class FileEntry extends CatalogEntry implements ProdosConstants
|
||||
// should be removed
|
||||
private boolean isGSOSFile ()
|
||||
{
|
||||
return ((fileType & 0xF0) == 0x80);
|
||||
// return ((fileType & 0xF0) == 0x80);
|
||||
if ((fileType & 0xF0) == 0x80)
|
||||
System.out.println ("GS/OS file: " + name);
|
||||
return false;
|
||||
}
|
||||
|
||||
// should be removed
|
||||
@ -508,6 +517,7 @@ class FileEntry extends CatalogEntry implements ProdosConstants
|
||||
}
|
||||
}
|
||||
|
||||
// should be removed
|
||||
private byte[] getGEOSBuffer ()
|
||||
{
|
||||
switch (storageType)
|
||||
@ -525,6 +535,7 @@ class FileEntry extends CatalogEntry implements ProdosConstants
|
||||
}
|
||||
}
|
||||
|
||||
// should be removed
|
||||
private byte[] getMasterIndexFile (int keyPtr)
|
||||
{
|
||||
byte[] buffer = disk.readSector (keyPtr);
|
||||
@ -545,6 +556,7 @@ class FileEntry extends CatalogEntry implements ProdosConstants
|
||||
return fileBuffer;
|
||||
}
|
||||
|
||||
// should be removed
|
||||
private byte[] getIndexFile (int keyPtr)
|
||||
{
|
||||
byte[] buffer = disk.readSector (keyPtr);
|
||||
|
Loading…
Reference in New Issue
Block a user