diff --git a/src/disk/mo.c b/src/disk/mo.c index 3ad2a0e85..feefe881b 100644 --- a/src/disk/mo.c +++ b/src/disk/mo.c @@ -373,7 +373,7 @@ mo_load(mo_t *dev, wchar_t *fn) } for (i = 0; i < KNOWN_MO_TYPES; i++) { - if (size == mo_types[i].disk_size) { + if (size == (mo_types[i].sectors * mo_types[i].bytes_per_sector)) { found = 1; dev->drv->medium_size = mo_types[i].sectors; dev->drv->sector_size = mo_types[i].bytes_per_sector; diff --git a/src/include/86box/mo.h b/src/include/86box/mo.h index 921a9aba3..cefb336b8 100644 --- a/src/include/86box/mo.h +++ b/src/include/86box/mo.h @@ -31,31 +31,29 @@ typedef struct { uint32_t sectors; uint16_t bytes_per_sector; - int64_t disk_size; - char name[255]; } mo_type_t; #define KNOWN_MO_TYPES 10 static const mo_type_t mo_types[KNOWN_MO_TYPES] = { // 3.5" standard M.O. disks - { 248826, 512, 127398912, "3.5\" 128Mb M.O. (ISO 10090)" }, - { 446325, 512, 228518400, "3.5\" 230Mb M.O. (ISO 13963)" }, - { 1041500, 512, 533248000, "3.5\" 540Mb M.O. (ISO 15498)" }, - { 310352, 2048, 635600896, "3.5\" 640Mb M.O. (ISO 15498)" }, - { 605846, 2048, 1240772608, "3.5\" 1.3Gb M.O. (GigaMO)" }, - { 1063146, 2048, 2177323008, "3.5\" 2.3Gb M.O. (GigaMO 2)" }, + { 248826, 512 }, + { 446325, 512 }, + { 1041500, 512 }, + { 310352, 2048 }, + { 605846, 2048 }, + { 1063146, 2048 }, // 5.25" M.O. disks - {573624, 512, 293695488, "5.25\" 600Mb M.O."}, - {314568, 1024, 322117632, "5.25\" 650Mb M.O."}, - {904995, 512, 463357440, "5.25\" 1Gb M.O."}, - {637041, 1024, 652329984, "5.25\" 1.3Gb M.O."}, + {573624, 512 }, + {314568, 1024 }, + {904995, 512 }, + {637041, 1024 }, }; typedef struct { - char vendor[8]; - char model[16]; - char revision[4]; + const char vendor[8]; + const char model[16]; + const char revision[4]; int8_t supported_media[KNOWN_MO_TYPES]; } mo_drive_type_t; diff --git a/src/win/win_new_floppy.c b/src/win/win_new_floppy.c index eb9dc55de..30cfd8f59 100644 --- a/src/win/win_new_floppy.c +++ b/src/win/win_new_floppy.c @@ -543,7 +543,7 @@ create_mo_sector_image(WCHAR *file_name, int8_t disk_size, uint8_t is_mdi, HWND total_sectors = dp->sectors; total_size = total_sectors * sector_bytes; - pbar_max = dp->sectors >> 11; + pbar_max = total_size; if (is_mdi) pbar_max += base; pbar_max >>= 11;