From b8ce6d6c635ff93a406c6fe10f04e026bdf259b5 Mon Sep 17 00:00:00 2001 From: "R. Belmont" Date: Wed, 30 May 2012 02:21:29 +0000 Subject: [PATCH] flopimg: support MFM formats where sector numbering starts at 0 [R. Belmont] --- src/lib/formats/esq16_dsk.c | 7 +------ src/lib/formats/flopimg.c | 6 +++++- src/lib/formats/flopimg.h | 1 + 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/lib/formats/esq16_dsk.c b/src/lib/formats/esq16_dsk.c index 36da569795a..516c0d25b08 100644 --- a/src/lib/formats/esq16_dsk.c +++ b/src/lib/formats/esq16_dsk.c @@ -25,7 +25,7 @@ const floppy_image_format_t::desc_e esqimg_format::esq_10_desc[] = { { MFM, 0xfe, 1 }, { TRACK_ID }, { HEAD_ID }, - { SECTOR_ID }, + { SECTOR_ID_ZEROBASED }, { SIZE_ID }, { CRC_END, 1 }, { CRC, 1 }, @@ -77,7 +77,6 @@ void esqimg_format::find_size(io_generic *io, int &track_count, int &head_count, if (size == 512*track_count*head_count*sector_count) { - printf("Identified Ensoniq .img\n"); return; } @@ -99,8 +98,6 @@ bool esqimg_format::load(io_generic *io, UINT32 form_factor, floppy_image *image int track_count, head_count, sector_count; find_size(io, track_count, head_count, sector_count); - printf("esqimg_format::load (trks %d heads %d sectors %d)\n", track_count, head_count, sector_count); - UINT8 sectdata[11*512]; desc_s sectors[11]; for(int i=0; iset_variant(floppy_image::DSDD); - printf("esqimg_format::OK\n"); - return true; } diff --git a/src/lib/formats/flopimg.c b/src/lib/formats/flopimg.c index c416d2c4ca0..988b0a97137 100644 --- a/src/lib/formats/flopimg.c +++ b/src/lib/formats/flopimg.c @@ -1362,10 +1362,14 @@ void floppy_image_format_t::generate_track(const desc_e *desc, int track, int he raw_w(buffer, offset, 8, gcr6fw_tb[(track & 0x40 ? 1 : 0) | (head ? 0x20 : 0)]); break; - case SECTOR_ID: + case SECTOR_ID: mfm_w(buffer, offset, 8, sect[sector_idx].sector_id); break; + case SECTOR_ID_ZEROBASED: + mfm_w(buffer, offset, 8, sect[sector_idx].sector_id-1); + break; + case SECTOR_ID_GCR6: raw_w(buffer, offset, 8, gcr6fw_tb[sect[sector_idx].sector_id]); break; diff --git a/src/lib/formats/flopimg.h b/src/lib/formats/flopimg.h index 3539d52cd89..302475f2c6e 100644 --- a/src/lib/formats/flopimg.h +++ b/src/lib/formats/flopimg.h @@ -311,6 +311,7 @@ protected: HEAD_ID, //!< Head id byte, mfm-encoded TRACK_HEAD_ID_GCR6, //!< Track id 7th bit + head, gc6-encoded SECTOR_ID, //!< Sector id byte, mfm-encoded + SECTOR_ID_ZEROBASED, //!< Sector id byte, mfm-encoded, first sector is 0, not 1 SECTOR_ID_GCR6, //!< Sector id byte, gcr6-encoded SIZE_ID, //!< Sector size code on one byte [log2(size/128)], mfm-encoded SECTOR_INFO_GCR6, //!< Sector info byte, gcr6-encoded