From 0842f1f31f8a360deebec19996d0184eab0fe25d Mon Sep 17 00:00:00 2001 From: Rob Greene Date: Sat, 5 Mar 2022 17:59:12 -0600 Subject: [PATCH] Adding getAddress method to FileEntry. --- .../webcodepro/applecommander/storage/FileEntry.java | 5 +++++ .../applecommander/storage/os/cpm/CpmFileEntry.java | 8 ++++++++ .../storage/os/dos33/DosFileEntry.java | 12 ++++++++++++ .../storage/os/dos33/DosFormatDisk.java | 2 ++ .../storage/os/gutenberg/GutenbergFileEntry.java | 7 +++++++ .../storage/os/nakedos/NakedosFileEntry.java | 8 ++++++++ .../storage/os/pascal/PascalFileEntry.java | 7 +++++++ .../storage/os/prodos/ProdosFileEntry.java | 11 +++++++++++ .../applecommander/storage/StorageBundle.properties | 1 + 9 files changed, 61 insertions(+) diff --git a/lib/ac-api/src/main/java/com/webcodepro/applecommander/storage/FileEntry.java b/lib/ac-api/src/main/java/com/webcodepro/applecommander/storage/FileEntry.java index e1e990c..28cdc65 100644 --- a/lib/ac-api/src/main/java/com/webcodepro/applecommander/storage/FileEntry.java +++ b/lib/ac-api/src/main/java/com/webcodepro/applecommander/storage/FileEntry.java @@ -131,6 +131,11 @@ public interface FileEntry { */ public abstract void setAddress(int address); + /** + * Get the address that this file loads at. + */ + public abstract int getAddress(); + /** * Indicates that this filetype can be compiled. * Compile is a somewhat arbitrary term, as the code may be diff --git a/lib/ac-api/src/main/java/com/webcodepro/applecommander/storage/os/cpm/CpmFileEntry.java b/lib/ac-api/src/main/java/com/webcodepro/applecommander/storage/os/cpm/CpmFileEntry.java index d03c505..7df52e8 100644 --- a/lib/ac-api/src/main/java/com/webcodepro/applecommander/storage/os/cpm/CpmFileEntry.java +++ b/lib/ac-api/src/main/java/com/webcodepro/applecommander/storage/os/cpm/CpmFileEntry.java @@ -476,6 +476,14 @@ public class CpmFileEntry implements FileEntry { public void setAddress(int address) { // not applicable } + + /** + * Get the address that this file loads at. + */ + public int getAddress() { + return 0; // Not applicable + } + /** * Indicates that this filetype can be compiled. diff --git a/lib/ac-api/src/main/java/com/webcodepro/applecommander/storage/os/dos33/DosFileEntry.java b/lib/ac-api/src/main/java/com/webcodepro/applecommander/storage/os/dos33/DosFileEntry.java index a998a77..4b45b08 100644 --- a/lib/ac-api/src/main/java/com/webcodepro/applecommander/storage/os/dos33/DosFileEntry.java +++ b/lib/ac-api/src/main/java/com/webcodepro/applecommander/storage/os/dos33/DosFileEntry.java @@ -285,6 +285,7 @@ public class DosFileEntry implements FileEntry { list.add(numberFormat.format(getSectorsUsed())); list.add(isDeleted() ? textBundle.get("Deleted") : ""); //$NON-NLS-1$//$NON-NLS-2$ list.add("T" + getTrack() + " S" + getSector()); //$NON-NLS-1$ //$NON-NLS-2$ + list.add("A=$" + AppleUtil.getFormattedWord(getAddress())); break; default: // FILE_DISPLAY_STANDARD list.add(getFilename()); @@ -496,6 +497,17 @@ public class DosFileEntry implements FileEntry { } } + /** + * Get the address that this file loads at. + */ + public int getAddress() { + if (needsAddress()) { + byte[] rawData = disk.getFileData(this); + return AppleUtil.getWordValue(rawData, 0); + } + return 0; + } + /** * Indicates that this filetype can be compiled. */ diff --git a/lib/ac-api/src/main/java/com/webcodepro/applecommander/storage/os/dos33/DosFormatDisk.java b/lib/ac-api/src/main/java/com/webcodepro/applecommander/storage/os/dos33/DosFormatDisk.java index 2c34188..ef64f38 100644 --- a/lib/ac-api/src/main/java/com/webcodepro/applecommander/storage/os/dos33/DosFormatDisk.java +++ b/lib/ac-api/src/main/java/com/webcodepro/applecommander/storage/os/dos33/DosFormatDisk.java @@ -376,6 +376,8 @@ public class DosFormatDisk extends FormattedDisk { FileColumnHeader.ALIGN_CENTER, "deleted")); list.add(new FileColumnHeader(textBundle.get("DosFormatDisk.TrackAndSectorList"), 7, FileColumnHeader.ALIGN_CENTER, "trackAndSectorList")); + list.add(new FileColumnHeader(textBundle.get("DosFormatDisk.FileAddress"), 7, + FileColumnHeader.ALIGN_RIGHT, "address")); break; default: // FILE_DISPLAY_STANDARD list.addAll(super.getFileColumnHeaders(displayMode)); diff --git a/lib/ac-api/src/main/java/com/webcodepro/applecommander/storage/os/gutenberg/GutenbergFileEntry.java b/lib/ac-api/src/main/java/com/webcodepro/applecommander/storage/os/gutenberg/GutenbergFileEntry.java index fef9caf..82c4503 100644 --- a/lib/ac-api/src/main/java/com/webcodepro/applecommander/storage/os/gutenberg/GutenbergFileEntry.java +++ b/lib/ac-api/src/main/java/com/webcodepro/applecommander/storage/os/gutenberg/GutenbergFileEntry.java @@ -334,6 +334,13 @@ public class GutenbergFileEntry implements FileEntry { public void setAddress(int address) { } + /** + * Get the address that this file loads at. + */ + public int getAddress() { + return 0; // Does not apply. + } + /** * Indicates that this filetype can be compiled. */ diff --git a/lib/ac-api/src/main/java/com/webcodepro/applecommander/storage/os/nakedos/NakedosFileEntry.java b/lib/ac-api/src/main/java/com/webcodepro/applecommander/storage/os/nakedos/NakedosFileEntry.java index 6b11342..7bb992c 100644 --- a/lib/ac-api/src/main/java/com/webcodepro/applecommander/storage/os/nakedos/NakedosFileEntry.java +++ b/lib/ac-api/src/main/java/com/webcodepro/applecommander/storage/os/nakedos/NakedosFileEntry.java @@ -245,6 +245,14 @@ public class NakedosFileEntry implements FileEntry { */ public void setAddress(int address) { } + + /** + * Get the address that this file loads at. + */ + public int getAddress() { + return 0; // Does not apply. + } + /** * Indicates that this filetype can be compiled. diff --git a/lib/ac-api/src/main/java/com/webcodepro/applecommander/storage/os/pascal/PascalFileEntry.java b/lib/ac-api/src/main/java/com/webcodepro/applecommander/storage/os/pascal/PascalFileEntry.java index b5a68fb..a3551f5 100644 --- a/lib/ac-api/src/main/java/com/webcodepro/applecommander/storage/os/pascal/PascalFileEntry.java +++ b/lib/ac-api/src/main/java/com/webcodepro/applecommander/storage/os/pascal/PascalFileEntry.java @@ -511,6 +511,13 @@ public class PascalFileEntry implements FileEntry { // Does not apply. } + /** + * Get the address that this file loads at. + */ + public int getAddress() { + return 0; // Does not apply. + } + /** * Indicates that this filetype can be compiled. */ diff --git a/lib/ac-api/src/main/java/com/webcodepro/applecommander/storage/os/prodos/ProdosFileEntry.java b/lib/ac-api/src/main/java/com/webcodepro/applecommander/storage/os/prodos/ProdosFileEntry.java index fbf8ae2..3a83153 100644 --- a/lib/ac-api/src/main/java/com/webcodepro/applecommander/storage/os/prodos/ProdosFileEntry.java +++ b/lib/ac-api/src/main/java/com/webcodepro/applecommander/storage/os/prodos/ProdosFileEntry.java @@ -612,6 +612,17 @@ public class ProdosFileEntry extends ProdosCommonEntry implements FileEntry { writeFileEntry(fileEntry); } + /** + * Get the address that this file loads at. + */ + public int getAddress() { + if (needsAddress()) { + return getAuxiliaryType(); + } + return 0; + } + + /** * Indicates that this filetype can be compiled. */ diff --git a/lib/ac-api/src/main/resources/com/webcodepro/applecommander/storage/StorageBundle.properties b/lib/ac-api/src/main/resources/com/webcodepro/applecommander/storage/StorageBundle.properties index e397155..c6e2605 100644 --- a/lib/ac-api/src/main/resources/com/webcodepro/applecommander/storage/StorageBundle.properties +++ b/lib/ac-api/src/main/resources/com/webcodepro/applecommander/storage/StorageBundle.properties @@ -154,6 +154,7 @@ DosFormatDisk.SectorsOnDisk=Sectors On Disk DosFormatDisk.Type=Type DosFormatDisk.SizeInSectors=Size (sectors) DosFormatDisk.TrackAndSectorList=Track/Sector List +DosFormatDisk.FileAddress=Address DosFormatDisk.InvalidFileEntryError=Must have a DOS 3.3 file entry\! DosFormatDisk.NotEnoughSectorsError=This file requires {0} sectors but there are only {1} sectors available on the disk. DosFormatDisk.InvalidTrackAndSectorCombinationError=Invalid track ({0}), sector ({1}) combination.