Class PascalFormatDisk

  • All Implemented Interfaces:
    DirectoryEntry

    public class PascalFormatDisk
    extends FormattedDisk
    Manages a disk that is in the Pascal format.

    Date created: Oct 4, 2002 11:56:50 PM

    • Field Detail

      • ENTRY_SIZE

        public static final int ENTRY_SIZE
        The size of the Pascal file entry.
        See Also:
        Constant Field Values
    • Constructor Detail

      • PascalFormatDisk

        public PascalFormatDisk​(java.lang.String filename,
                                ImageOrder imageOrder)
        Constructor for PascalFormatDisk.
    • Method Detail

      • create

        public static PascalFormatDisk[] create​(java.lang.String filename,
                                                java.lang.String volumeName,
                                                ImageOrder imageOrder)
        Create a PascalFormatDisk.
      • getDirectory

        public java.util.List<PascalFileEntry> getDirectory()
        Retrieve the entire directory.
      • putDirectory

        public void putDirectory​(java.util.List<PascalFileEntry> files)
        Write the revised directory.
      • canCreateDirectories

        public boolean canCreateDirectories()
        Identify if additional directories can be created. This may indicate that directories are not available to this operating system or simply that the disk image is "locked" to writing.
      • canCreateFile

        public boolean canCreateFile()
        Indicates if this disk image can create a file. If not, the reason may be as simple as it has not beem implemented to something specific about the disk.
      • readDirectory

        public byte[] readDirectory()
        Read directory blocks. These are always in blocks 2 - 5 and are treated as a 2048 byte array.
      • writeDirectory

        public void writeDirectory​(byte[] directory)
        Write directory blocks.
      • getFreeBlocks

        public int getFreeBlocks()
        Return the number of free blocks.
      • getVolumeEntry

        protected byte[] getVolumeEntry()
        Return the volume entry.
      • getBlocksOnDisk

        public int getBlocksOnDisk()
        Return the number of blocks on disk.
      • getFilesOnDisk

        public int getFilesOnDisk()
        Return the number of files on disk.
      • getFirstBlock

        public int getFirstBlock()
        Return the first block.
      • getLastAccessDate

        public java.util.Date getLastAccessDate()
        Return the last access date.
      • getMostRecentDateSetting

        public java.util.Date getMostRecentDateSetting()
        Return the most recent date setting. Huh?
      • getUsedBlocks

        public int getUsedBlocks()
        Return the number of used blocks.
      • setDiskName

        public void setDiskName​(java.lang.String volumeName)
        Set the name of the disk. The Pascal parlance is "volume name" whereas AppleCommander uses disk name. Max length is 7.
        Overrides:
        setDiskName in class FormattedDisk
      • getBitmapDimensions

        public int[] getBitmapDimensions()
        Get suggested dimensions for display of bitmap. Since Pascal disks are a block device, no suggestion is given.
        Specified by:
        getBitmapDimensions in class FormattedDisk
      • getBitmapLabels

        public java.lang.String[] getBitmapLabels()
        Get the labels to use in the bitmap.
        Specified by:
        getBitmapLabels in class FormattedDisk
      • supportsDeletedFiles

        public boolean supportsDeletedFiles()
        Indicates if this disk format supports "deleted" files.
        Specified by:
        supportsDeletedFiles in class FormattedDisk
      • canReadFileData

        public boolean canReadFileData()
        Indicates if this disk image can read data from a file.
        Specified by:
        canReadFileData in class FormattedDisk
      • canWriteFileData

        public boolean canWriteFileData()
        Indicates if this disk image can write data to a file.
        Specified by:
        canWriteFileData in class FormattedDisk
      • canDeleteFile

        public boolean canDeleteFile()
        Indicates if this disk image can delete a file.
        Specified by:
        canDeleteFile in class FormattedDisk
      • getLogicalDiskNumber

        public int getLogicalDiskNumber()
        Returns the logical disk number. Returns a 0 to indicate no numbering.
        Specified by:
        getLogicalDiskNumber in class FormattedDisk
      • getSuggestedFilename

        public java.lang.String getSuggestedFilename​(java.lang.String filename)
        Returns a valid filename for the given filename.

        Summary taken from the filename description in "Apple Pascal: Operating System Reference Manual."

        A legal diskette filename can consist of up to 15 characters. Lower- case letters typed into a filename are translated to upper-case, and spaces and non-printing characters are removed from the filename. All characters are legal in filenames. However, from the keyboard you should not type filenames that include the following characters: dollar sign ($), left square bracket ([), equals sign (=) question mark, (?), RETURN, and the CTRL characters C, F, M, S, U, and @.

        WARNING: The Filer will not be able to access filenames containing the characters dollar sign ($), equals sign (=), question mark (?), or comma (,)

        Specified by:
        getSuggestedFilename in class FormattedDisk
      • getSuggestedFiletype

        public java.lang.String getSuggestedFiletype​(java.lang.String filename)
        Returns a valid filetype for the given filename. The most simple format will just assume a filetype of binary. This method is available for the interface to make an intelligent first guess as to the filetype.
        Specified by:
        getSuggestedFiletype in class FormattedDisk
      • getFiletypes

        public java.lang.String[] getFiletypes()
        Returns a list of possible file types. Since the filetype is specific to each operating system, a simple String is used.
        Specified by:
        getFiletypes in class FormattedDisk
      • needsAddress

        public boolean needsAddress​(java.lang.String filetype)
        Indicates if this filetype requires an address component. No Pascal filetypes require or support an address.
        Specified by:
        needsAddress in class FormattedDisk
      • supportsDiskMap

        public boolean supportsDiskMap()
        Indicates if this FormattedDisk supports a disk map.
        Overrides:
        supportsDiskMap in class FormattedDisk
      • changeImageOrder

        public void changeImageOrder​(ImageOrder imageOrder)
        Change to a different ImageOrder. Remains in Pascal format but the underlying order can change.
        Specified by:
        changeImageOrder in class FormattedDisk
        See Also:
        ImageOrder
      • setFileData

        public void setFileData​(FileEntry fileEntry,
                                byte[] fileData)
                         throws DiskFullException
        Writes the raw bytes into the file. This bypasses any special formatting of the data (such as prepending the data with a length and/or an address). Typically, the FileEntry.setFileData method should be used.
        Specified by:
        setFileData in class FormattedDisk
        Throws:
        DiskFullException
      • fromProdosFiletype

        public java.lang.String fromProdosFiletype​(java.lang.String prodosFiletype)
        Provides conversation from a given ProDOS file type since as it is common across many archiving tools.
        Specified by:
        fromProdosFiletype in class FormattedDisk
      • toProdosFiletype

        public java.lang.String toProdosFiletype​(java.lang.String nativeFiletype)
        Provides conversation to a given ProDOS file type since as it is common across many archiving tools.
        Specified by:
        toProdosFiletype in class FormattedDisk