mirror of
https://github.com/dmolony/DiskBrowser.git
synced 2024-12-29 11:31:08 +00:00
improved text preferences
This commit is contained in:
parent
145bcb38de
commit
13a45cd9bf
@ -543,7 +543,7 @@ public class ApplesoftBasicProgram extends BasicProgram
|
|||||||
int linePtr;
|
int linePtr;
|
||||||
int length;
|
int length;
|
||||||
|
|
||||||
public SourceLine (int ptr)
|
SourceLine (int ptr)
|
||||||
{
|
{
|
||||||
linePtr = ptr;
|
linePtr = ptr;
|
||||||
// lineNumber = Utility.intValue (buffer[ptr + 2], buffer[ptr + 3]);
|
// lineNumber = Utility.intValue (buffer[ptr + 2], buffer[ptr + 3]);
|
||||||
@ -630,7 +630,7 @@ public class ApplesoftBasicProgram extends BasicProgram
|
|||||||
// used for aligning the equals sign
|
// used for aligning the equals sign
|
||||||
int assignEqualPos;
|
int assignEqualPos;
|
||||||
|
|
||||||
public SubLine (SourceLine parent, int startPtr, int length)
|
SubLine (SourceLine parent, int startPtr, int length)
|
||||||
{
|
{
|
||||||
this.parent = parent;
|
this.parent = parent;
|
||||||
this.startPtr = startPtr;
|
this.startPtr = startPtr;
|
||||||
@ -738,22 +738,22 @@ public class ApplesoftBasicProgram extends BasicProgram
|
|||||||
return is (TOKEN_REM) && !isFirst ();
|
return is (TOKEN_REM) && !isFirst ();
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isFirst ()
|
boolean isFirst ()
|
||||||
{
|
{
|
||||||
return (parent.linePtr + 4) == startPtr;
|
return (parent.linePtr + 4) == startPtr;
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean is (byte token)
|
boolean is (byte token)
|
||||||
{
|
{
|
||||||
return buffer[startPtr] == token;
|
return buffer[startPtr] == token;
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isEmpty ()
|
boolean isEmpty ()
|
||||||
{
|
{
|
||||||
return length == 1 && buffer[startPtr] == 0;
|
return length == 1 && buffer[startPtr] == 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean containsToken ()
|
boolean containsToken ()
|
||||||
{
|
{
|
||||||
// ignore first byte, check the rest for tokens
|
// ignore first byte, check the rest for tokens
|
||||||
for (int p = startPtr + 1, max = startPtr + length; p < max; p++)
|
for (int p = startPtr + 1, max = startPtr + length; p < max; p++)
|
||||||
@ -763,7 +763,7 @@ public class ApplesoftBasicProgram extends BasicProgram
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean containsControlChars ()
|
boolean containsControlChars ()
|
||||||
{
|
{
|
||||||
for (int p = startPtr + 1, max = startPtr + length; p < max; p++)
|
for (int p = startPtr + 1, max = startPtr + length; p < max; p++)
|
||||||
{
|
{
|
||||||
@ -778,7 +778,7 @@ public class ApplesoftBasicProgram extends BasicProgram
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void addFormattedRem (StringBuilder text)
|
void addFormattedRem (StringBuilder text)
|
||||||
{
|
{
|
||||||
int ptr = startPtr + 1;
|
int ptr = startPtr + 1;
|
||||||
int max = startPtr + length - 2;
|
int max = startPtr + length - 2;
|
||||||
|
@ -92,19 +92,35 @@ public class BasicTextFile extends TextFile
|
|||||||
if (recordLength == 0)
|
if (recordLength == 0)
|
||||||
return unknownLength (text);
|
return unknownLength (text);
|
||||||
|
|
||||||
|
if (textPreferences.showTextOffsets)
|
||||||
|
{
|
||||||
text.append (" Offset Record# Text values\n");
|
text.append (" Offset Record# Text values\n");
|
||||||
text.append (
|
text.append (
|
||||||
"------ ------- -------------------------------------------------------\n");
|
"---------- ------- -------------------------------------------------------\n");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
text.append ("Text values\n");
|
||||||
|
text.append ("-------------------------------------------------------\n");
|
||||||
|
}
|
||||||
return knownLength (text, 0).toString ();
|
return knownLength (text, 0).toString ();
|
||||||
}
|
}
|
||||||
|
|
||||||
// ---------------------------------------------------------------------------------//
|
// ---------------------------------------------------------------------------------//
|
||||||
private String treeFileText (StringBuilder text)
|
private String treeFileText (StringBuilder text)
|
||||||
// ---------------------------------------------------------------------------------//
|
// ---------------------------------------------------------------------------------//
|
||||||
|
{
|
||||||
|
if (textPreferences.showTextOffsets)
|
||||||
{
|
{
|
||||||
text.append (" Offset Record# Text values\n");
|
text.append (" Offset Record# Text values\n");
|
||||||
text.append (
|
text.append (
|
||||||
"---------- ------- -------------------------------------------------------\n");
|
"---------- ------- -------------------------------------------------------\n");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
text.append ("Text values\n");
|
||||||
|
text.append ("-------------------------------------------------------\n");
|
||||||
|
}
|
||||||
for (TextBuffer tb : buffers)
|
for (TextBuffer tb : buffers)
|
||||||
{
|
{
|
||||||
buffer = tb.buffer;
|
buffer = tb.buffer;
|
||||||
@ -135,10 +151,20 @@ public class BasicTextFile extends TextFile
|
|||||||
bytes--;
|
bytes--;
|
||||||
|
|
||||||
String line = HexFormatter.getString (buffer, ptr, bytes);
|
String line = HexFormatter.getString (buffer, ptr, bytes);
|
||||||
|
|
||||||
|
if (textPreferences.showTextOffsets)
|
||||||
|
{
|
||||||
line = line.replaceAll ("\\n", "\n ");
|
line = line.replaceAll ("\\n", "\n ");
|
||||||
text.append (
|
text.append (
|
||||||
String.format ("%,10d %,8d %s%n", recNo * recordLength, recNo++, line));
|
String.format ("%,10d %,8d %s%n", recNo * recordLength, recNo++, line));
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
line = line.replaceAll ("\\n", "\n ");
|
||||||
|
text.append (String.format ("%s%n", line));
|
||||||
|
recNo++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return text;
|
return text;
|
||||||
}
|
}
|
||||||
|
@ -30,7 +30,6 @@ public class DosMasterFile extends AbstractFile
|
|||||||
public static boolean isDos33 (ProdosDisk parentDisk, byte[] buffer)
|
public static boolean isDos33 (ProdosDisk parentDisk, byte[] buffer)
|
||||||
// ---------------------------------------------------------------------------------//
|
// ---------------------------------------------------------------------------------//
|
||||||
{
|
{
|
||||||
// System.out.println (HexFormatter.format (buffer, 0x38, 0x30, 0x38));
|
|
||||||
System.out.printf ("%nHighest Block: %04X (%<,d)%n",
|
System.out.printf ("%nHighest Block: %04X (%<,d)%n",
|
||||||
parentDisk.getDisk ().getTotalBlocks () - 1);
|
parentDisk.getDisk ().getTotalBlocks () - 1);
|
||||||
|
|
||||||
@ -106,9 +105,6 @@ public class DosMasterFile extends AbstractFile
|
|||||||
daList.add (disk.getDiskAddress (block));
|
daList.add (disk.getDiskAddress (block));
|
||||||
|
|
||||||
byte[] diskBuffer = disk.readBlocks (daList);
|
byte[] diskBuffer = disk.readBlocks (daList);
|
||||||
// System.out.println (HexFormatter.format (diskBuffer));
|
|
||||||
// System.out.printf ("Buffer: %,d%n", diskBuffer.length);
|
|
||||||
// System.out.printf ("Blocks: %,d x 2 = %,d%n", daList.size (), daList.size () * 2);
|
|
||||||
|
|
||||||
if (false)
|
if (false)
|
||||||
createDisk (String.format ("%sVol%03d.dsk", base, volNo), diskBuffer);
|
createDisk (String.format ("%sVol%03d.dsk", base, volNo), diskBuffer);
|
||||||
|
@ -478,12 +478,25 @@ public class DiskFactory
|
|||||||
|
|
||||||
disk2 = checkProdos (appleDisk512);
|
disk2 = checkProdos (appleDisk512);
|
||||||
if (disk2 != null)
|
if (disk2 != null)
|
||||||
|
{
|
||||||
disk = new DualDosDisk (disk, disk2);
|
disk = new DualDosDisk (disk, disk2);
|
||||||
|
return disk;
|
||||||
|
}
|
||||||
|
|
||||||
AppleDisk appleDisk = new AppleDisk (file, 35, 16);
|
AppleDisk appleDisk = new AppleDisk (file, 35, 16);
|
||||||
disk2 = checkCPMDisk (appleDisk);
|
disk2 = checkCPMDisk (appleDisk);
|
||||||
if (disk2 != null)
|
if (disk2 != null)
|
||||||
|
{
|
||||||
disk = new DualDosDisk (disk, disk2);
|
disk = new DualDosDisk (disk, disk2);
|
||||||
|
return disk;
|
||||||
|
}
|
||||||
|
|
||||||
|
disk2 = checkPascalDisk (appleDisk512);
|
||||||
|
if (disk2 != null)
|
||||||
|
{
|
||||||
|
disk = new DualDosDisk (disk, disk2);
|
||||||
|
return disk;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (suffix.equals ("po"))
|
else if (suffix.equals ("po"))
|
||||||
|
@ -7,6 +7,7 @@ import java.util.List;
|
|||||||
import com.bytezone.diskbrowser.applefile.ApplesoftBasicProgram;
|
import com.bytezone.diskbrowser.applefile.ApplesoftBasicProgram;
|
||||||
import com.bytezone.diskbrowser.applefile.AssemblerProgram;
|
import com.bytezone.diskbrowser.applefile.AssemblerProgram;
|
||||||
import com.bytezone.diskbrowser.applefile.BasicProgramGS;
|
import com.bytezone.diskbrowser.applefile.BasicProgramGS;
|
||||||
|
import com.bytezone.diskbrowser.applefile.BasicTextFile;
|
||||||
import com.bytezone.diskbrowser.applefile.CharacterRom;
|
import com.bytezone.diskbrowser.applefile.CharacterRom;
|
||||||
import com.bytezone.diskbrowser.applefile.DefaultAppleFile;
|
import com.bytezone.diskbrowser.applefile.DefaultAppleFile;
|
||||||
import com.bytezone.diskbrowser.applefile.DeviceDriver;
|
import com.bytezone.diskbrowser.applefile.DeviceDriver;
|
||||||
@ -35,7 +36,6 @@ import com.bytezone.diskbrowser.applefile.ShapeTable;
|
|||||||
import com.bytezone.diskbrowser.applefile.SimpleText;
|
import com.bytezone.diskbrowser.applefile.SimpleText;
|
||||||
import com.bytezone.diskbrowser.applefile.StoredVariables;
|
import com.bytezone.diskbrowser.applefile.StoredVariables;
|
||||||
import com.bytezone.diskbrowser.applefile.TextBuffer;
|
import com.bytezone.diskbrowser.applefile.TextBuffer;
|
||||||
import com.bytezone.diskbrowser.applefile.BasicTextFile;
|
|
||||||
import com.bytezone.diskbrowser.appleworks.AppleworksADBFile;
|
import com.bytezone.diskbrowser.appleworks.AppleworksADBFile;
|
||||||
import com.bytezone.diskbrowser.appleworks.AppleworksSSFile;
|
import com.bytezone.diskbrowser.appleworks.AppleworksSSFile;
|
||||||
import com.bytezone.diskbrowser.appleworks.AppleworksWPFile;
|
import com.bytezone.diskbrowser.appleworks.AppleworksWPFile;
|
||||||
@ -272,6 +272,7 @@ class FileEntry extends CatalogEntry implements ProdosConstants
|
|||||||
|
|
||||||
byte[] buffer = getBuffer ();
|
byte[] buffer = getBuffer ();
|
||||||
byte[] exactBuffer = getExactBuffer (buffer);
|
byte[] exactBuffer = getExactBuffer (buffer);
|
||||||
|
// System.out.printf ("Name: %s, EOF: %04X%n", name, endOfFile);
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
@ -44,7 +44,6 @@ class VolumeDirectoryHeader extends DirectoryHeader
|
|||||||
} while (block > 0);
|
} while (block > 0);
|
||||||
|
|
||||||
// convert the Free Sector Table
|
// convert the Free Sector Table
|
||||||
// int bitMapBytes = totalBlocks / 8; // one bit per block
|
|
||||||
int bitMapBytes = (totalBlocks - 1) / 8 + 1; // one bit per block
|
int bitMapBytes = (totalBlocks - 1) / 8 + 1; // one bit per block
|
||||||
byte[] buffer = new byte[bitMapBytes];
|
byte[] buffer = new byte[bitMapBytes];
|
||||||
int bitMapBlocks = (bitMapBytes - 1) / disk.getBlocksPerTrack () + 1;
|
int bitMapBlocks = (bitMapBytes - 1) / disk.getBlocksPerTrack () + 1;
|
||||||
@ -77,19 +76,14 @@ class VolumeDirectoryHeader extends DirectoryHeader
|
|||||||
byte b = buffer[i];
|
byte b = buffer[i];
|
||||||
for (int j = 0; j < 8; j++)
|
for (int j = 0; j < 8; j++)
|
||||||
{
|
{
|
||||||
if ((b & 0x80) == 0x80)
|
boolean free = (b & 0x80) != 0;
|
||||||
{
|
if (free)
|
||||||
freeBlocks++;
|
freeBlocks++;
|
||||||
parentDisk.setSectorFree (block++, true);
|
parentDisk.setSectorFree (block++, free);
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
usedBlocks++;
|
|
||||||
parentDisk.setSectorFree (block++, false);
|
|
||||||
}
|
|
||||||
b <<= 1;
|
b <<= 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
usedBlocks = totalBlocks - freeBlocks; // totalBlocks may not be a multiple of 8
|
||||||
}
|
}
|
||||||
|
|
||||||
// ---------------------------------------------------------------------------------//
|
// ---------------------------------------------------------------------------------//
|
||||||
|
Loading…
Reference in New Issue
Block a user