diff options
| author | 2024-09-08 04:29:42 -0500 | |
|---|---|---|
| committer | 2024-09-08 11:29:42 +0200 | |
| commit | 362d7321368c93bb960d51dbfe6bf6e07d451b18 (patch) | |
| tree | 585e0ccd6f105f92d20d45dee478702bd5768d00 /src/lib | |
| parent | b72023282b6029adf489b8a4b8b79b1ba760707d (diff) | |
floppy.cpp: Use standard drives for hard-sectored systems (#12727)
* floppy.cpp: Use standard drives for hard-sectored systems
* fix typo
Diffstat (limited to 'src/lib')
| -rw-r--r-- | src/lib/formats/flopimg.cpp | 13 | ||||
| -rw-r--r-- | src/lib/formats/flopimg.h | 26 |
2 files changed, 38 insertions, 1 deletions
diff --git a/src/lib/formats/flopimg.cpp b/src/lib/formats/flopimg.cpp index 2139ae11be0..fa4903447fb 100644 --- a/src/lib/formats/flopimg.cpp +++ b/src/lib/formats/flopimg.cpp @@ -138,13 +138,26 @@ const char *floppy_image::get_variant_name(uint32_t form_factor, uint32_t varian { switch(variant) { case SSSD: return "Single side, single density"; + case SSSD10: return "Single side, single density, 10-sector"; + case SSSD16: return "Single side, single density, 16-sector"; + case SSSD32: return "Single side, single density, 32-sector"; case SSDD: return "Single side, double density"; + case SSDD10: return "Single side, double density, 10-sector"; case SSDD16: return "Single side, double density, 16 hard sector"; + case SSDD32: return "Single side, double density, 32-sector"; case SSQD: return "Single side, quad density"; + case SSQD10: return "Single side, quad density, 10-sector"; case SSQD16: return "Single side, quad density, 16 hard sector"; + case DSSD: return "Double side, single density"; + case DSSD10: return "Double side, single density, 10-sector"; + case DSSD16: return "Double side, single density, 16-sector"; + case DSSD32: return "Double side, single density, 32-sector"; case DSDD: return "Double side, double density"; + case DSDD10: return "Double side, double density, 10-sector"; case DSDD16: return "Double side, double density, 16 hard sector"; + case DSDD32: return "Double side, double density, 32-sector"; case DSQD: return "Double side, quad density"; + case DSQD10: return "Double side, quad density, 10-sector"; case DSQD16: return "Double side, quad density, 16 hard sector"; case DSHD: return "Double side, high density"; case DSED: return "Double side, extended density"; diff --git a/src/lib/formats/flopimg.h b/src/lib/formats/flopimg.h index bd8e4e52f67..18cc17ea73b 100644 --- a/src/lib/formats/flopimg.h +++ b/src/lib/formats/flopimg.h @@ -526,14 +526,26 @@ public: //! Variants enum { SSSD = 0x44535353, //!< "SSSD", Single-sided single-density + SSSD10 = 0x30315353, //!< "SS10", Single-sided single-density 10 hard sector + SSSD16 = 0x36315353, //!< "SS16", Single-sided single-density 16 hard sector + SSSD32 = 0x32335353, //!< "SS32", Single-sided single-density 32 hard sector SSDD = 0x44445353, //!< "SSDD", Single-sided double-density + SSDD10 = 0x30314453, //!< "SD10", Single-sided double-density 10 hard sector SSDD16 = 0x36314453, //!< "SD16", Single-sided double-density 16 hard sector + SSDD32 = 0x32334453, //!< "SD32", Single-sided double-density 32 hard sector SSQD = 0x44515353, //!< "SSQD", Single-sided quad-density + SSQD10 = 0x30315153, //!< "SQ10", Single-sided quad-density 10 hard sector SSQD16 = 0x36315153, //!< "SQ16", Single-sided quad-density 16 hard sector DSSD = 0x44535344, //!< "DSSD", Double-sided single-density + DSSD10 = 0x30315344, //!< "DS10", Double-sided single-density 10 hard sector + DSSD16 = 0x36315344, //!< "DS16", Double-sided single-density 16 hard sector + DSSD32 = 0x32335344, //!< "DS32", Double-sided single-density 32 hard sector DSDD = 0x44445344, //!< "DSDD", Double-sided double-density (720K in 3.5, 360K in 5.25) + DSDD10 = 0x30314444, //!< "DD10", Double-sided double-density 10 hard sector DSDD16 = 0x36314444, //!< "DD16", Double-sided double-density 16 hard sector (360K in 5.25) + DSDD32 = 0x32334444, //!< "DD32", Double-sided double-density 32 hard sector DSQD = 0x44515344, //!< "DSQD", Double-sided quad-density (720K in 5.25, means DD+80 tracks) + DSQD10 = 0x30315144, //!< "DQ10", Double-sided quad-density 10 hard sector DSQD16 = 0x36315144, //!< "DQ16", Double-sided quad-density 16 hard sector (720K in 5.25, means DD+80 tracks) DSHD = 0x44485344, //!< "DSHD", Double-sided high-density (1440K) DSED = 0x44455344 //!< "DSED", Double-sided extra-density (2880K) @@ -546,6 +558,14 @@ public: M2FM = 0x4D32464D //!< "M2FM", modified modified frequency modulation }; + //! Sectoring + enum { + SOFT = 0x54464F53, //!< "SOFT", Soft-sectored + H10 = 0x20303148, //!< "H10 ", Hard 10-sectored + H16 = 0x20363148, //!< "H16 ", Hard 16-sectored + H32 = 0x20323348 //!< "H32 ", Hard 32-sectored (8 inch disk) + }; + // construction/destruction @@ -562,10 +582,14 @@ public: uint32_t get_form_factor() const noexcept { return form_factor; } //! @return the variant. uint32_t get_variant() const noexcept { return variant; } + //! @return the disk sectoring. + uint32_t get_sectoring() const noexcept { return sectoring; } //! @param v the variant. void set_variant(uint32_t v); //! @param v the variant. void set_form_variant(uint32_t f, uint32_t v) { if(form_factor == FF_UNKNOWN) form_factor = f; set_variant(v); } + //! @param s the sectoring. + void set_sectoring(uint32_t s) { sectoring = s; } //! Find most recent and next index hole for provided angular position. //! The most recent hole may be equal to provided position. The next @@ -623,7 +647,7 @@ public: private: int tracks, heads; - uint32_t form_factor, variant; + uint32_t form_factor, variant, sectoring; struct track_info { |
