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