Do the boilerplate of the IBM encoder.

This commit is contained in:
David Given
2020-02-09 23:56:20 +01:00
parent be41c1de76
commit ad3a930c6a
5 changed files with 139 additions and 40 deletions

15
arch/ibm/encoder.cc Normal file
View File

@@ -0,0 +1,15 @@
#include "globals.h"
#include "record.h"
#include "decoders/decoders.h"
#include "encoders/encoders.h"
#include "ibm.h"
#include "crc.h"
#include "sectorset.h"
#include "writer.h"
std::unique_ptr<Fluxmap> IbmEncoder::encode(
int physicalTrack, int physicalSide, const SectorSet& allSectors)
{
return std::unique_ptr<Fluxmap>();
}

View File

@@ -2,6 +2,7 @@
#define IBM_H
#include "decoders/decoders.h"
#include "encoders/encoders.h"
/* IBM format (i.e. ordinary PC floppies). */
@@ -47,52 +48,34 @@ private:
unsigned _currentHeaderLength;
};
#if 0
class AbstractIbmDecoder : public AbstractSoftSectorDecoder
struct IbmParameters
{
int sectorsPerTrack;
int sectorSize;
bool emitIam;
int startSectorId;
int clockSpeedKhz;
bool useFm;
int gap1;
int gap3;
uint8_t damByte;
std::string sectorSkew;
};
class IbmEncoder : public AbstractEncoder
{
public:
AbstractIbmDecoder(unsigned sectorIdBase):
_sectorIdBase(sectorIdBase)
{}
virtual ~AbstractIbmDecoder() {}
IbmEncoder(const IbmParameters& parameters):
parameters(parameters)
{}
SectorVector decodeToSectors(const RawRecordVector& rawRecords, unsigned physicalTrack, unsigned physicalSide);
virtual ~IbmEncoder() {}
protected:
virtual int skipHeaderBytes() const = 0;
public:
std::unique_ptr<Fluxmap> encode(int physicalTrack, int physicalSide, const SectorSet& allSectors);
private:
unsigned _sectorIdBase;
IbmParameters parameters;
};
class IbmFmDecoder : public AbstractIbmDecoder
{
public:
IbmFmDecoder(unsigned sectorIdBase):
AbstractIbmDecoder(sectorIdBase)
{}
int recordMatcher(uint64_t fifo) const;
protected:
int skipHeaderBytes() const
{ return 0; }
};
class IbmMfmDecoder : public AbstractIbmDecoder
{
public:
IbmMfmDecoder(unsigned sectorIdBase):
AbstractIbmDecoder(sectorIdBase)
{}
nanoseconds_t guessClock(Fluxmap& fluxmap) const;
int recordMatcher(uint64_t fifo) const;
protected:
int skipHeaderBytes() const
{ return 3; }
};
#endif
#endif