Interface TrackSectorDevice

All Superinterfaces:
CapabilityProvider, Container, Device, HintProvider, InformationProvider
All Known Implementing Classes:
BlockToTrackSectorAdapter, DosOrderedTrackSectorDevice, SkewedTrackSectorDevice, TrackSectorNibbleDevice

public interface TrackSectorDevice extends Device
A TrackSectorDevice is any type of device that supports track and sector geometry. Most of the time, this is a physical 5.25" floppy, but that can be virtualized through various mechanisms, such as UniDOS.
  • Field Details

  • Method Details

    • getGeometry

      Get information that describes the disk geometry.
    • readSector

      DataBuffer readSector(int track, int sector)
      Read a single sector from the disk.
    • readRange

      default DataBuffer readRange(int track, int sector, int totalSectors)
      Read a range of sectors.
    • writeSector

      void writeSector(int track, int sector, DataBuffer data)
      Write a single sector to the disk.
    • writeRange

      default void writeRange(int track, int sector, DataBuffer data)
      Write a range of sectors to the disk. Note that the data buffer is modified to be a multiple of sector size.
    • performRange

      default void performRange(int track, int sector, int totalSectors, TriIntConsumer actionFn)
      A utility method that performs an operation across a range of sectors. Mostly reusable code for the readRange and writeRange operations.
    • calculateRequiredSectors

      default int calculateRequiredSectors(int size)
      A handy/common function to calculate the number of sectors needed for the given size.
    • format

      default void format()

      Format a disk. For most disks, this is simply a wipe to all zeros. If this disk has extended format (such as nibble formats), this is the opportunity to write out that format.

      NOTE: Adapter type devices have to be cautious about what device is responsible about formatting. For example, a UniDOS disk is 2x400K volumes on an 800K block device -- if they defer formatting to the 800K block device, a format on one volume also wipes out the other (in this case, do not defer to the "parent"). However, if the block adapter contains a nibble-based TrackSectorDevice, the actual formatting needs to get to the nibble device so it can lay down sector markers and the rest of the track structure.