Package org.applecommander.device
Class TrackSectorNibbleDevice
java.lang.Object
org.applecommander.device.TrackSectorNibbleDevice
- All Implemented Interfaces:
CapabilityProvider
,TrackSectorDevice
-
Nested Class Summary
Nested classes/interfaces inherited from interface org.applecommander.device.TrackSectorDevice
TrackSectorDevice.Geometry
-
Field Summary
Fields inherited from interface org.applecommander.device.TrackSectorDevice
SECTOR_SIZE
-
Constructor Summary
ConstructorsConstructorDescriptionTrackSectorNibbleDevice
(NibbleTrackReaderWriter trackReaderWriter, DiskMarker diskMarker, NibbleDiskCodec dataCodec, int sectorsPerTrack) -
Method Summary
Modifier and TypeMethodDescriptionboolean
can
(Capability capability) int
decodeOddEven
(DataBuffer rawData, int offset) Decode odd-even bytes as stored on disk.void
encodeOddEven
(DataBuffer data, int offset, int value) Encode odd-even bytes to be stored on disk.int
findSector
(DataBuffer trackData, int track, int sector) static int
locateField
(int[] prolog, int[] epilog, DataBuffer trackData, DataBuffer fieldData, int startingOffset) Locate a field on the track.readSector
(int track, int sector) void
writeSector
(int track, int sector, DataBuffer data)
-
Constructor Details
-
TrackSectorNibbleDevice
public TrackSectorNibbleDevice(NibbleTrackReaderWriter trackReaderWriter, DiskMarker diskMarker, NibbleDiskCodec dataCodec, int sectorsPerTrack)
-
-
Method Details
-
can
- Specified by:
can
in interfaceCapabilityProvider
-
getGeometry
- Specified by:
getGeometry
in interfaceTrackSectorDevice
-
decodeOddEven
Decode odd-even bytes as stored on disk. The format will be in two bytes. They are stored as such:XX = 1d1d1d1d (odd data bits) YY = 1d1d1d1d (even data bits)
XX is then shifted by a bit and ANDed with YY to get the data byte. See page 3-12 in Beneath Apple DOS for more information. -
encodeOddEven
Encode odd-even bytes to be stored on disk. See decodeOddEven for the format.- See Also:
-
locateField
public static int locateField(int[] prolog, int[] epilog, DataBuffer trackData, DataBuffer fieldData, int startingOffset) Locate a field on the track. These are identified by a 3 byte unique signature. Because of the way in which disk bytes are captured, we need to wrap around the track to ensure all sequences of bytes are accounted for. Note that we also check the epilog but allow it to be wiggly.This method fills fieldData as well as returning the last position referenced in the track buffer.
-
findSector
-
readSector
- Specified by:
readSector
in interfaceTrackSectorDevice
-
writeSector
- Specified by:
writeSector
in interfaceTrackSectorDevice
-