diff options
author | 2017-01-15 14:53:43 +0300 | |
---|---|---|
committer | 2017-03-12 17:17:06 +0300 | |
commit | 8fd315da7e4170cc34f5743882252dc9b3ee6218 (patch) | |
tree | 909ae54e1f1ea9ae9610b4c9ae2156fa557109bd /src/lib/formats/ppg_dsk.cpp | |
parent | 1d027e1d22bea481f6ac12470457d418b790dbfb (diff) |
eurocom2, waveterm: new skeleton drivers (Eltec EurocomII SBC, PPG Waveterm A)
Diffstat (limited to 'src/lib/formats/ppg_dsk.cpp')
-rw-r--r-- | src/lib/formats/ppg_dsk.cpp | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/src/lib/formats/ppg_dsk.cpp b/src/lib/formats/ppg_dsk.cpp new file mode 100644 index 00000000000..dd08a841e00 --- /dev/null +++ b/src/lib/formats/ppg_dsk.cpp @@ -0,0 +1,67 @@ +// license:BSD-3-Clause +// copyright-holders:Sergey Svishchev +/********************************************************************* + + formats/ppg_dsk.c + + PPG Waveterm formats + +*********************************************************************/ + +#include <assert.h> + +#include "formats/ppg_dsk.h" + +ppg_format::ppg_format() : wd177x_format(formats) +{ +} + +const char *ppg_format::name() const +{ + return "ppg"; +} + +const char *ppg_format::description() const +{ + return "PPG Waveterm disk image"; +} + +const char *ppg_format::extensions() const +{ + return "wta"; +} + +const ppg_format::format ppg_format::formats[] = { + // .dsk formats used by flexemu. gaps unverified. + { floppy_image::FF_525, floppy_image::SSDD, floppy_image::MFM, + 2000, 10, 35, 1, 256, {}, 1, {}, 32, 22, 31 }, + { floppy_image::FF_525, floppy_image::SSDD, floppy_image::MFM, + 2000, 10, 40, 1, 256, {}, 1, {}, 32, 22, 31 }, + { floppy_image::FF_525, floppy_image::DSDD, floppy_image::MFM, + 2000, 10, 35, 2, 256, {}, 1, {}, 32, 22, 31 }, + { floppy_image::FF_525, floppy_image::DSDD, floppy_image::MFM, + 2000, 10, 40, 2, 256, {}, 1, {}, 32, 22, 31 }, + { floppy_image::FF_525, floppy_image::DSDD, floppy_image::MFM, + 2000, 20, 35, 2, 256, {}, 1, {}, 32, 2, 2 }, + { floppy_image::FF_525, floppy_image::DSDD, floppy_image::MFM, + 2000, 20, 40, 2, 256, {}, 1, {}, 32, 2, 2 }, + + // .wta format used by PPG Waveterm A transfer software. gaps unverified. + { floppy_image::FF_525, floppy_image::DSDD, floppy_image::MFM, + 2000, 16, 77, 2, 256, {}, 1, {}, 32, 22, 31 }, + {} +}; + +void ppg_format::build_sector_description(const format &f, uint8_t *sectdata, desc_s *sectors, int track, int head) const +{ + int cur_offset = 0; + + for (int i=0; i<f.sector_count; i++) { + sectors[i].data = sectdata + cur_offset; + sectors[i].size = f.sector_base_size ? f.sector_base_size : f.per_sector_size[i]; + cur_offset += sectors[i].size; + sectors[i].sector_id = i + f.sector_base_id + (head * f.sector_count); + } +} + +const floppy_format_type FLOPPY_PPG_FORMAT = &floppy_image_format_creator<ppg_format>; |