mirror of
https://github.com/davidgiven/fluxengine.git
synced 2025-10-31 11:17:01 -07:00
Port the Zilog MCZ to the new architecture.
This commit is contained in:
@@ -14,31 +14,35 @@
|
||||
|
||||
static const FluxPattern SECTOR_START_PATTERN(16, 0xaaab);
|
||||
|
||||
nanoseconds_t ZilogMczDecoder::findSector(FluxmapReader& fmr, Track& track)
|
||||
AbstractSimplifiedDecoder::RecordType ZilogMczDecoder::advanceToNextRecord()
|
||||
{
|
||||
fmr.seekToIndexMark();
|
||||
return fmr.seekToPattern(SECTOR_START_PATTERN);
|
||||
const FluxMatcher* matcher = nullptr;
|
||||
_fmr->seekToIndexMark();
|
||||
_sector->clock = _fmr->seekToPattern(SECTOR_START_PATTERN, matcher);
|
||||
if (matcher == &SECTOR_START_PATTERN)
|
||||
return SECTOR_RECORD;
|
||||
return UNKNOWN_RECORD;
|
||||
}
|
||||
|
||||
void ZilogMczDecoder::decodeSingleSector(FluxmapReader& fmr, Track& track, Sector& sector)
|
||||
void ZilogMczDecoder::decodeSectorRecord()
|
||||
{
|
||||
fmr.readRawBits(14, sector.clock);
|
||||
readRawBits(14);
|
||||
|
||||
auto rawbits = fmr.readRawBits(140*16, sector.clock);
|
||||
auto rawbits = readRawBits(140*16);
|
||||
auto bytes = decodeFmMfm(rawbits).slice(0, 140);
|
||||
ByteReader br(bytes);
|
||||
|
||||
sector.logicalSector = br.read_8() & 0x1f;
|
||||
sector.logicalSide = 0;
|
||||
sector.logicalTrack = br.read_8() & 0x7f;
|
||||
if (sector.logicalSector > 31)
|
||||
_sector->logicalSector = br.read_8() & 0x1f;
|
||||
_sector->logicalSide = 0;
|
||||
_sector->logicalTrack = br.read_8() & 0x7f;
|
||||
if (_sector->logicalSector > 31)
|
||||
return;
|
||||
if (sector.logicalTrack > 80)
|
||||
if (_sector->logicalTrack > 80)
|
||||
return;
|
||||
|
||||
sector.data = br.read(132);
|
||||
_sector->data = br.read(132);
|
||||
uint16_t wantChecksum = br.read_be16();
|
||||
uint16_t gotChecksum = crc16(MODBUS_POLY, 0x0000, bytes.slice(0, 134));
|
||||
|
||||
sector.status = (wantChecksum == gotChecksum) ? Sector::OK : Sector::BAD_CHECKSUM;
|
||||
_sector->status = (wantChecksum == gotChecksum) ? Sector::OK : Sector::BAD_CHECKSUM;
|
||||
}
|
||||
|
||||
@@ -4,13 +4,13 @@
|
||||
class Sector;
|
||||
class Fluxmap;
|
||||
|
||||
class ZilogMczDecoder : public AbstractStatefulDecoder
|
||||
class ZilogMczDecoder : public AbstractSimplifiedDecoder
|
||||
{
|
||||
public:
|
||||
virtual ~ZilogMczDecoder() {}
|
||||
|
||||
nanoseconds_t findSector(FluxmapReader& fmr, Track& track);
|
||||
void decodeSingleSector(FluxmapReader& fmr, Track& track, Sector& sector);
|
||||
RecordType advanceToNextRecord();
|
||||
void decodeSectorRecord();
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
18
meson.build
18
meson.build
@@ -214,14 +214,14 @@ macdecoderlib = declare_dependency(
|
||||
include_directories('lib/macintosh')
|
||||
)
|
||||
|
||||
# zilogmczdecoderlib = declare_dependency(
|
||||
# link_with:
|
||||
# shared_library('zilogmczdecoderlib',
|
||||
# [ 'lib/zilogmcz/decoder.cc', ],
|
||||
# dependencies: [fmtlib, felib, decoderlib]),
|
||||
# include_directories:
|
||||
# include_directories('lib/zilogmcz')
|
||||
# )
|
||||
zilogmczdecoderlib = declare_dependency(
|
||||
link_with:
|
||||
shared_library('zilogmczdecoderlib',
|
||||
[ 'lib/zilogmcz/decoder.cc', ],
|
||||
dependencies: [fmtlib, felib, decoderlib]),
|
||||
include_directories:
|
||||
include_directories('lib/zilogmcz')
|
||||
)
|
||||
|
||||
# victor9kdecoderlib = declare_dependency(
|
||||
# link_with:
|
||||
@@ -246,7 +246,7 @@ executable('fe-readf85', ['src/fe-readf85.cc'], dependencies
|
||||
executable('fe-readfb100', ['src/fe-readfb100.cc'], dependencies: [fmtlib, felib, decoderlib, readerlib, fb100decoderlib])
|
||||
executable('fe-readibm', ['src/fe-readibm.cc'], dependencies: [fmtlib, felib, decoderlib, readerlib, ibmdecoderlib])
|
||||
executable('fe-readmac', ['src/fe-readmac.cc'], dependencies: [fmtlib, felib, decoderlib, readerlib, macdecoderlib])
|
||||
# executable('fe-readzilogmcz', ['src/fe-readzilogmcz.cc'], dependencies: [fmtlib, felib, decoderlib, readerlib, zilogmczdecoderlib])
|
||||
executable('fe-readzilogmcz', ['src/fe-readzilogmcz.cc'], dependencies: [fmtlib, felib, decoderlib, readerlib, zilogmczdecoderlib])
|
||||
# executable('fe-readvictor9k', ['src/fe-readvictor9k.cc'], dependencies: [fmtlib, felib, decoderlib, readerlib, victor9kdecoderlib])
|
||||
executable('fe-rpm', ['src/fe-rpm.cc'], dependencies: [fmtlib, felib])
|
||||
executable('fe-seek', ['src/fe-seek.cc'], dependencies: [fmtlib, felib])
|
||||
|
||||
Reference in New Issue
Block a user