mirror of
https://github.com/holub/mame
synced 2025-05-28 08:33:05 +03:00
formats/imd_dsk: implement get_sectors_per_track() (#11672)
This commit is contained in:
parent
1e3d35e962
commit
c40d893239
@ -23,6 +23,7 @@ struct imddsk_tag
|
||||
{
|
||||
int heads;
|
||||
int tracks;
|
||||
int track_sectors[84*2]; /* number of sectors for each track */
|
||||
int sector_size;
|
||||
uint64_t track_offsets[84*2]; /* offset within data for each track */
|
||||
};
|
||||
@ -60,6 +61,11 @@ static int imd_get_tracks_per_disk(floppy_image_legacy *floppy)
|
||||
return get_tag(floppy)->tracks;
|
||||
}
|
||||
|
||||
static int imd_get_sectors_per_track(floppy_image_legacy *floppy, int head, int track)
|
||||
{
|
||||
return get_tag(floppy)->track_sectors[(track<<1) + head];
|
||||
}
|
||||
|
||||
static uint64_t imd_get_track_offset(floppy_image_legacy *floppy, int head, int track)
|
||||
{
|
||||
return get_tag(floppy)->track_offsets[(track<<1) + head];
|
||||
@ -334,9 +340,11 @@ FLOPPY_CONSTRUCT( imd_dsk_construct )
|
||||
tag->heads = 1;
|
||||
do {
|
||||
floppy_image_read(floppy, header, pos, 5);
|
||||
if ((header[2] & 1)==1) tag->heads = 2;
|
||||
tag->track_offsets[(header[1]<<1) + (header[2] & 1)] = pos;
|
||||
sector_num = header[3];
|
||||
int track = (header[1]<<1) + (header[2] & 1);
|
||||
if ((header[2] & 1)==1) tag->heads = 2;
|
||||
tag->track_offsets[track] = pos;
|
||||
tag->track_sectors[track] = sector_num;
|
||||
pos += 5 + sector_num; // skip header and sector numbering map
|
||||
if(header[2] & 0x80) pos += sector_num; // skip cylinder numbering map
|
||||
if(header[2] & 0x40) pos += sector_num; // skip head numbering map
|
||||
@ -365,6 +373,7 @@ FLOPPY_CONSTRUCT( imd_dsk_construct )
|
||||
callbacks->get_heads_per_disk = imd_get_heads_per_disk;
|
||||
callbacks->get_tracks_per_disk = imd_get_tracks_per_disk;
|
||||
callbacks->get_indexed_sector_info = imd_get_indexed_sector_info;
|
||||
callbacks->get_sectors_per_track = imd_get_sectors_per_track;
|
||||
|
||||
return FLOPPY_ERROR_SUCCESS;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user