summaryrefslogtreecommitdiffstatshomepage
path: root/src/lib/formats/ti99_dsk.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/formats/ti99_dsk.h')
-rw-r--r--src/lib/formats/ti99_dsk.h73
1 files changed, 36 insertions, 37 deletions
diff --git a/src/lib/formats/ti99_dsk.h b/src/lib/formats/ti99_dsk.h
index 04ba3e88a14..3fbf9b6bb1e 100644
--- a/src/lib/formats/ti99_dsk.h
+++ b/src/lib/formats/ti99_dsk.h
@@ -2,7 +2,7 @@
// copyright-holders:Michael Zapf
/*********************************************************************
- formats/ti99_dsk.c
+ formats/ti99_dsk.h
TI99 and Geneve disk images
@@ -22,30 +22,29 @@
class ti99_floppy_format : public floppy_image_format_t
{
public:
- bool supports_save() const override { return true; }
- bool load(io_generic *io, uint32_t form_factor, floppy_image *image) override;
- bool save(io_generic *io, floppy_image *image) override;
+ bool supports_save() const noexcept override { return true; }
+ bool load(util::random_read &io, uint32_t form_factor, const std::vector<uint32_t> &variants, floppy_image &image) const override;
+ bool save(util::random_read_write &io, const std::vector<uint32_t> &variants, const floppy_image &image) const override;
protected:
- int decode_bitstream(const uint8_t *bitstream, uint8_t *trackdata, int *sector, int cell_count, int encoding, uint8_t gapbytes, int track_size);
- uint8_t get_data_from_encoding(uint16_t raw);
- int get_sectors(const uint8_t *bitstream, int cell_count, int encoding, int track, int head, int sectors, uint8_t *sectordata, int *secnumber);
+ static uint8_t get_data_from_encoding(uint16_t raw);
+ static int get_sectors(const std::vector<bool> &bitstream, int encoding, int track, int head, int sectors, uint8_t *sectordata, int *secnumber);
- virtual int min_heads() =0;
+ virtual int min_heads() const =0;
- virtual void determine_sizes(io_generic *io, int& cell_size, int& sector_count, int& heads, int& tracks) =0;
- virtual int get_track_size(int sector_count) =0;
- virtual void load_track(io_generic *io, uint8_t *sectordata, int *sector, int *secoffset, int head, int track, int sectorcount, int trackcount) =0;
- virtual void write_track(io_generic *io, uint8_t *sectordata, int *sector, int track, int head, int sector_count, int track_count) =0;
+ virtual void determine_sizes(util::random_read &io, int& cell_size, int& sector_count, int& heads, int& tracks) const =0;
+ virtual int get_track_size(int sector_count) const=0;
+ virtual void load_track(util::random_read &io, uint8_t *sectordata, int *sector, int *secoffset, int head, int track, int sectorcount, int trackcount) const=0;
+ virtual void write_track(util::random_read_write &io, uint8_t *sectordata, int *sector, int track, int head, int sector_count, int track_count) const=0;
- int get_encoding(int cell_size);
+ static int get_encoding(int cell_size);
- void generate_fm_track_from_sectors(floppy_image *image, uint8_t *sectordata, int sector_count, int *sector, int *secoffset, int track, int trackid, int head);
- void generate_mfm_track_from_sectors(floppy_image *image, uint8_t *sectordata, int sector_count, int *sector, int *secoffset, int track, int trackid, int head);
+ static void generate_fm_track_from_sectors(floppy_image &image, uint8_t *sectordata, int sector_count, int *sector, int *secoffset, int track, int trackid, int head);
+ static void generate_mfm_track_from_sectors(floppy_image &image, uint8_t *sectordata, int sector_count, int *sector, int *secoffset, int track, int trackid, int head);
// Debugging
- void dumpbytes(uint8_t* trackdata, int length);
- std::string dumpline(uint8_t* line, int address) const;
+ static void dumpbytes(const uint8_t* trackdata, int length);
+ static std::string dumpline(const uint8_t* line, int address);
};
/*
@@ -54,19 +53,19 @@ protected:
class ti99_sdf_format : public ti99_floppy_format
{
public:
- int identify(io_generic *io, uint32_t form_factor) override;
- const char *name() const override;
- const char *description() const override;
- const char *extensions() const override;
+ int identify(util::random_read &io, uint32_t form_factor, const std::vector<uint32_t> &variants) const override;
+ const char *name() const noexcept override;
+ const char *description() const noexcept override;
+ const char *extensions() const noexcept override;
private:
- void determine_sizes(io_generic *io, int& cell_size, int& sector_count, int& heads, int& tracks) override;
- int get_track_size(int sector_count) override;
- void write_track(io_generic *io, uint8_t *sectordata, int *sector, int track, int head, int sector_count, int track_count) override;
- void load_track(io_generic *io, uint8_t *sectordata, int *sector, int *secoffset, int head, int track, int sector_count, int track_count) override;
+ void determine_sizes(util::random_read &io, int& cell_size, int& sector_count, int& heads, int& tracks) const override;
+ int get_track_size(int sector_count) const override;
+ void write_track(util::random_read_write &io, uint8_t *sectordata, int *sector, int track, int head, int sector_count, int track_count) const override;
+ void load_track(util::random_read &io, uint8_t *sectordata, int *sector, int *secoffset, int head, int track, int sector_count, int track_count) const override;
// This format supports single-sided images
- int min_heads() override { return 1; }
+ int min_heads() const override { return 1; }
struct ti99vib
{
@@ -85,7 +84,7 @@ private:
};
};
-extern const floppy_format_type FLOPPY_TI99_SDF_FORMAT;
+extern const ti99_sdf_format FLOPPY_TI99_SDF_FORMAT;
/*
Implementation of the track dump format.
@@ -93,21 +92,21 @@ extern const floppy_format_type FLOPPY_TI99_SDF_FORMAT;
class ti99_tdf_format : public ti99_floppy_format
{
public:
- int identify(io_generic *io, uint32_t form_factor) override;
- const char *name() const override;
- const char *description() const override;
- const char *extensions() const override;
+ int identify(util::random_read &io, uint32_t form_factor, const std::vector<uint32_t> &variants) const override;
+ const char *name() const noexcept override;
+ const char *description() const noexcept override;
+ const char *extensions() const noexcept override;
private:
- void determine_sizes(io_generic *io, int& cell_size, int& sector_count, int& heads, int& tracks) override;
- void load_track(io_generic *io, uint8_t *sectordata, int *sector, int *secoffset, int head, int track, int sectorcount, int trackcount) override;
- void write_track(io_generic *io, uint8_t *sectordata, int *sector, int track, int head, int sector_count, int track_count) override;
- int get_track_size(int sector_count) override;
+ void determine_sizes(util::random_read &io, int& cell_size, int& sector_count, int& heads, int& tracks) const override;
+ void load_track(util::random_read &io, uint8_t *sectordata, int *sector, int *secoffset, int head, int track, int sectorcount, int trackcount) const override;
+ void write_track(util::random_read_write &io, uint8_t *sectordata, int *sector, int track, int head, int sector_count, int track_count) const override;
+ int get_track_size(int sector_count) const override;
// This format only supports double-sided images
- int min_heads() override { return 2; }
+ int min_heads() const override { return 2; }
};
-extern const floppy_format_type FLOPPY_TI99_TDF_FORMAT;
+extern const ti99_tdf_format FLOPPY_TI99_TDF_FORMAT;
#endif // MAME_FORMATS_TI99_DSK_H