mirror of
https://github.com/dmolony/DiskBrowser.git
synced 2024-11-29 11:49:29 +00:00
removed buffer parameter
This commit is contained in:
parent
032da321c3
commit
ccbfc47a66
@ -30,11 +30,11 @@ public class DirectoryHeader
|
|||||||
int fileCount;
|
int fileCount;
|
||||||
|
|
||||||
// ---------------------------------------------------------------------------------//
|
// ---------------------------------------------------------------------------------//
|
||||||
public DirectoryHeader (ProdosDisk disk, byte[] buffer, int ptr)
|
public DirectoryHeader (ProdosDisk disk, int ptr)
|
||||||
// ---------------------------------------------------------------------------------//
|
// ---------------------------------------------------------------------------------//
|
||||||
{
|
{
|
||||||
this.disk = disk;
|
this.disk = disk;
|
||||||
this.buffer = buffer;
|
this.buffer = disk.getBuffer ();
|
||||||
this.ptr = ptr;
|
this.ptr = ptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -91,7 +91,7 @@ public class DirectoryHeader
|
|||||||
int nameLength = buffer[ptr] & 0x0F;
|
int nameLength = buffer[ptr] & 0x0F;
|
||||||
if (nameLength != 0 && storageType < 0x0E)
|
if (nameLength != 0 && storageType < 0x0E)
|
||||||
{
|
{
|
||||||
FileEntry fileEntry = new FileEntry (disk, buffer, ptr);
|
FileEntry fileEntry = new FileEntry (disk, ptr);
|
||||||
fileEntry.read ();
|
fileEntry.read ();
|
||||||
System.out.println (fileEntry.toText ());
|
System.out.println (fileEntry.toText ());
|
||||||
}
|
}
|
||||||
|
@ -7,20 +7,16 @@ public class ExtendedKeyBlock
|
|||||||
// -----------------------------------------------------------------------------------//
|
// -----------------------------------------------------------------------------------//
|
||||||
{
|
{
|
||||||
private final ProdosDisk disk;
|
private final ProdosDisk disk;
|
||||||
private final byte[] buffer;
|
|
||||||
private final int ptr;
|
private final int ptr;
|
||||||
|
|
||||||
// int blockNo;
|
|
||||||
|
|
||||||
MiniEntry dataFork;
|
MiniEntry dataFork;
|
||||||
MiniEntry resourceFork;
|
MiniEntry resourceFork;
|
||||||
|
|
||||||
// ---------------------------------------------------------------------------------//
|
// ---------------------------------------------------------------------------------//
|
||||||
public ExtendedKeyBlock (ProdosDisk disk, byte[] buffer, int ptr)
|
public ExtendedKeyBlock (ProdosDisk disk, int ptr)
|
||||||
// ---------------------------------------------------------------------------------//
|
// ---------------------------------------------------------------------------------//
|
||||||
{
|
{
|
||||||
this.disk = disk;
|
this.disk = disk;
|
||||||
this.buffer = buffer;
|
|
||||||
this.ptr = ptr;
|
this.ptr = ptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -52,10 +48,10 @@ public class ExtendedKeyBlock
|
|||||||
// ---------------------------------------------------------------------------------//
|
// ---------------------------------------------------------------------------------//
|
||||||
{
|
{
|
||||||
if (dataFork != null) // else zero buffer??
|
if (dataFork != null) // else zero buffer??
|
||||||
dataFork.write (buffer, ptr);
|
dataFork.write (disk.getBuffer (), ptr);
|
||||||
|
|
||||||
if (resourceFork != null)
|
if (resourceFork != null)
|
||||||
resourceFork.write (buffer, ptr + 0x100);
|
resourceFork.write (disk.getBuffer (), ptr + 0x100);
|
||||||
}
|
}
|
||||||
|
|
||||||
// ---------------------------------------------------------------------------------//
|
// ---------------------------------------------------------------------------------//
|
||||||
|
@ -35,11 +35,11 @@ public class FileEntry
|
|||||||
int headerPointer;
|
int headerPointer;
|
||||||
|
|
||||||
// ---------------------------------------------------------------------------------//
|
// ---------------------------------------------------------------------------------//
|
||||||
public FileEntry (ProdosDisk disk, byte[] buffer, int ptr)
|
public FileEntry (ProdosDisk disk, int ptr)
|
||||||
// ---------------------------------------------------------------------------------//
|
// ---------------------------------------------------------------------------------//
|
||||||
{
|
{
|
||||||
this.disk = disk;
|
this.disk = disk;
|
||||||
this.buffer = buffer;
|
this.buffer = disk.getBuffer ();
|
||||||
this.ptr = ptr;
|
this.ptr = ptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -21,11 +21,11 @@ public class FileWriter
|
|||||||
int eof;
|
int eof;
|
||||||
|
|
||||||
// ---------------------------------------------------------------------------------//
|
// ---------------------------------------------------------------------------------//
|
||||||
FileWriter (ProdosDisk disk, byte[] buffer)
|
FileWriter (ProdosDisk disk)
|
||||||
// ---------------------------------------------------------------------------------//
|
// ---------------------------------------------------------------------------------//
|
||||||
{
|
{
|
||||||
this.disk = disk;
|
this.disk = disk;
|
||||||
this.buffer = buffer;
|
this.buffer = disk.getBuffer ();
|
||||||
}
|
}
|
||||||
|
|
||||||
// ---------------------------------------------------------------------------------//
|
// ---------------------------------------------------------------------------------//
|
||||||
|
@ -97,7 +97,7 @@ public class ProdosDisk
|
|||||||
|
|
||||||
if (i == 0)
|
if (i == 0)
|
||||||
{
|
{
|
||||||
volumeDirectoryHeader = new VolumeDirectoryHeader (this, buffer, ptr + 4);
|
volumeDirectoryHeader = new VolumeDirectoryHeader (this, ptr + 4);
|
||||||
volumeDirectoryHeader.fileName = volumeName;
|
volumeDirectoryHeader.fileName = volumeName;
|
||||||
volumeDirectoryHeader.totalBlocks = maxBlocks;
|
volumeDirectoryHeader.totalBlocks = maxBlocks;
|
||||||
volumeDirectoryHeader.creationDate = LocalDateTime.now ();
|
volumeDirectoryHeader.creationDate = LocalDateTime.now ();
|
||||||
@ -187,7 +187,7 @@ public class ProdosDisk
|
|||||||
fileEntry.creationDate = created;
|
fileEntry.creationDate = created;
|
||||||
fileEntry.modifiedDate = modified;
|
fileEntry.modifiedDate = modified;
|
||||||
|
|
||||||
FileWriter fileWriter = new FileWriter (this, buffer);
|
FileWriter fileWriter = new FileWriter (this);
|
||||||
fileWriter.writeFile (dataBuffer, dataBuffer.length);
|
fileWriter.writeFile (dataBuffer, dataBuffer.length);
|
||||||
|
|
||||||
fileEntry.storageType = fileWriter.storageType;
|
fileEntry.storageType = fileWriter.storageType;
|
||||||
@ -209,13 +209,12 @@ public class ProdosDisk
|
|||||||
throws DiskFullException
|
throws DiskFullException
|
||||||
// ---------------------------------------------------------------------------------//
|
// ---------------------------------------------------------------------------------//
|
||||||
{
|
{
|
||||||
FileWriter fileWriter = new FileWriter (this, buffer); // create dummy FileEntry
|
FileWriter fileWriter = new FileWriter (this); // create resource fork
|
||||||
fileWriter.writeFile (dataBuffer, eof);
|
fileWriter.writeFile (dataBuffer, eof);
|
||||||
|
|
||||||
int blockNo = allocateNextBlock ();
|
int blockNo = allocateNextBlock ();
|
||||||
|
|
||||||
ExtendedKeyBlock extendedKeyBlock =
|
ExtendedKeyBlock extendedKeyBlock = new ExtendedKeyBlock (this, blockNo * BLOCK_SIZE);
|
||||||
new ExtendedKeyBlock (this, buffer, blockNo * BLOCK_SIZE);
|
|
||||||
|
|
||||||
extendedKeyBlock.addMiniEntry (1, fileEntry.storageType, fileEntry.keyPointer,
|
extendedKeyBlock.addMiniEntry (1, fileEntry.storageType, fileEntry.keyPointer,
|
||||||
fileEntry.blocksUsed, fileEntry.eof);
|
fileEntry.blocksUsed, fileEntry.eof);
|
||||||
@ -350,7 +349,7 @@ public class ProdosDisk
|
|||||||
if (storageType < SUBDIRECTORY_HEADER
|
if (storageType < SUBDIRECTORY_HEADER
|
||||||
&& fileName.equals (new String (buffer, ptr + 1, nameLength)))
|
&& fileName.equals (new String (buffer, ptr + 1, nameLength)))
|
||||||
{
|
{
|
||||||
FileEntry fileEntry = new FileEntry (this, buffer, ptr);
|
FileEntry fileEntry = new FileEntry (this, ptr);
|
||||||
fileEntry.read ();
|
fileEntry.read ();
|
||||||
return Optional.of (fileEntry);
|
return Optional.of (fileEntry);
|
||||||
}
|
}
|
||||||
@ -393,7 +392,7 @@ public class ProdosDisk
|
|||||||
updateFileCount (fileEntry.headerPointer);
|
updateFileCount (fileEntry.headerPointer);
|
||||||
|
|
||||||
SubdirectoryHeader subdirectoryHeader =
|
SubdirectoryHeader subdirectoryHeader =
|
||||||
new SubdirectoryHeader (this, buffer, fileEntry.keyPointer * BLOCK_SIZE + 4);
|
new SubdirectoryHeader (this, fileEntry.keyPointer * BLOCK_SIZE + 4);
|
||||||
|
|
||||||
subdirectoryHeader.fileName = name;
|
subdirectoryHeader.fileName = name;
|
||||||
subdirectoryHeader.creationDate = LocalDateTime.now ();
|
subdirectoryHeader.creationDate = LocalDateTime.now ();
|
||||||
@ -424,16 +423,6 @@ public class ProdosDisk
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// ---------------------------------------------------------------------------------//
|
|
||||||
// private int createExtendedKeyBlock (FileEntry fileEntry) throws DiskFullException
|
|
||||||
// // ---------------------------------------------------------------------------------//
|
|
||||||
// {
|
|
||||||
// int blockNo = allocateNextBlock ();
|
|
||||||
// ExtendedKeyBlock extendedKeyBlock = new ExtendedKeyBlock (blockNo);
|
|
||||||
//
|
|
||||||
// return blockNo;
|
|
||||||
// }
|
|
||||||
|
|
||||||
// ---------------------------------------------------------------------------------//
|
// ---------------------------------------------------------------------------------//
|
||||||
int allocateNextBlock () throws DiskFullException
|
int allocateNextBlock () throws DiskFullException
|
||||||
// ---------------------------------------------------------------------------------//
|
// ---------------------------------------------------------------------------------//
|
||||||
@ -469,7 +458,7 @@ public class ProdosDisk
|
|||||||
for (int i = 0; i < ENTRIES_PER_BLOCK; i++)
|
for (int i = 0; i < ENTRIES_PER_BLOCK; i++)
|
||||||
{
|
{
|
||||||
if (buffer[ptr] == 0) // free slot
|
if (buffer[ptr] == 0) // free slot
|
||||||
return new FileEntry (this, buffer, ptr);
|
return new FileEntry (this, ptr);
|
||||||
|
|
||||||
ptr += ENTRY_SIZE;
|
ptr += ENTRY_SIZE;
|
||||||
}
|
}
|
||||||
@ -492,7 +481,7 @@ public class ProdosDisk
|
|||||||
// update parent's file entry size (this is the subdirectory file entry
|
// update parent's file entry size (this is the subdirectory file entry
|
||||||
subdirectoryHeader.updateParentFileEntry ();
|
subdirectoryHeader.updateParentFileEntry ();
|
||||||
|
|
||||||
return new FileEntry (this, buffer, ptr + 4); // first slot in new block
|
return new FileEntry (this, ptr + 4); // first slot in new block
|
||||||
}
|
}
|
||||||
|
|
||||||
// ---------------------------------------------------------------------------------//
|
// ---------------------------------------------------------------------------------//
|
||||||
|
@ -16,10 +16,10 @@ public class SubdirectoryHeader extends DirectoryHeader
|
|||||||
private byte parentEntryLength;
|
private byte parentEntryLength;
|
||||||
|
|
||||||
// ---------------------------------------------------------------------------------//
|
// ---------------------------------------------------------------------------------//
|
||||||
public SubdirectoryHeader (ProdosDisk disk, byte[] buffer, int ptr)
|
public SubdirectoryHeader (ProdosDisk disk, int ptr)
|
||||||
// ---------------------------------------------------------------------------------//
|
// ---------------------------------------------------------------------------------//
|
||||||
{
|
{
|
||||||
super (disk, buffer, ptr);
|
super (disk, ptr);
|
||||||
|
|
||||||
storageType = (byte) 0x0E;
|
storageType = (byte) 0x0E;
|
||||||
access = (byte) 0xC3;
|
access = (byte) 0xC3;
|
||||||
@ -38,7 +38,7 @@ public class SubdirectoryHeader extends DirectoryHeader
|
|||||||
FileEntry getParentFileEntry ()
|
FileEntry getParentFileEntry ()
|
||||||
// ---------------------------------------------------------------------------------//
|
// ---------------------------------------------------------------------------------//
|
||||||
{
|
{
|
||||||
FileEntry fileEntry = new FileEntry (disk, buffer,
|
FileEntry fileEntry = new FileEntry (disk,
|
||||||
parentPointer * BLOCK_SIZE + (parentEntry - 1) * ENTRY_SIZE + 4);
|
parentPointer * BLOCK_SIZE + (parentEntry - 1) * ENTRY_SIZE + 4);
|
||||||
fileEntry.read ();
|
fileEntry.read ();
|
||||||
|
|
||||||
|
@ -11,10 +11,10 @@ public class VolumeDirectoryHeader extends DirectoryHeader
|
|||||||
int totalBlocks;
|
int totalBlocks;
|
||||||
|
|
||||||
// ---------------------------------------------------------------------------------//
|
// ---------------------------------------------------------------------------------//
|
||||||
public VolumeDirectoryHeader (ProdosDisk disk, byte[] buffer, int ptr)
|
public VolumeDirectoryHeader (ProdosDisk disk, int ptr)
|
||||||
// ---------------------------------------------------------------------------------//
|
// ---------------------------------------------------------------------------------//
|
||||||
{
|
{
|
||||||
super (disk, buffer, ptr);
|
super (disk, ptr);
|
||||||
|
|
||||||
storageType = (byte) 0x0F;
|
storageType = (byte) 0x0F;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user