diff --git a/scripts/src/formats.lua b/scripts/src/formats.lua index 5803229b943..c272fe4c394 100644 --- a/scripts/src/formats.lua +++ b/scripts/src/formats.lua @@ -56,6 +56,8 @@ project "formats" MAME_DIR .. "src/lib/formats/mfi_dsk.h", MAME_DIR .. "src/lib/formats/imd_dsk.cpp", MAME_DIR .. "src/lib/formats/imd_dsk.h", + MAME_DIR .. "src/lib/formats/upd765_dsk.cpp", + MAME_DIR .. "src/lib/formats/upd765_dsk.h", MAME_DIR .. "src/lib/formats/pc_dsk.cpp", MAME_DIR .. "src/lib/formats/pc_dsk.h", MAME_DIR .. "src/lib/formats/d88_dsk.cpp", @@ -1914,18 +1916,6 @@ if (FORMATS["UEF_CAS"]~=null or _OPTIONS["with-tools"]) then } end --------------------------------------------------- --- ---@src/lib/formats/upd765_dsk.h,FORMATS["UPD765_DSK"] = true --------------------------------------------------- - -if (FORMATS["UPD765_DSK"]~=null or _OPTIONS["with-tools"]) then - files { - MAME_DIR.. "src/lib/formats/upd765_dsk.cpp", - MAME_DIR.. "src/lib/formats/upd765_dsk.h", - } -end - -------------------------------------------------- -- --@src/lib/formats/vdk_dsk.h,FORMATS["VDK_DSK"] = true diff --git a/scripts/target/mame/arcade.lua b/scripts/target/mame/arcade.lua index 2d303879b0f..4794fb488bc 100644 --- a/scripts/target/mame/arcade.lua +++ b/scripts/target/mame/arcade.lua @@ -850,7 +850,6 @@ FORMATS["AMI_DSK"] = true FORMATS["SC3000_BIT"] = true FORMATS["WD177X_DSK"] = true FORMATS["NASLITE_DSK"] = true -FORMATS["UPD765_DSK"] = true FORMATS["BASICDSK"] = true FORMATS["IBMXDF_DSK"] = true diff --git a/scripts/target/mame/mess.lua b/scripts/target/mame/mess.lua index e54c6f9bf97..26bc92a46bd 100644 --- a/scripts/target/mame/mess.lua +++ b/scripts/target/mame/mess.lua @@ -1139,7 +1139,6 @@ FORMATS["TVC_DSK"] = true FORMATS["TZX_CAS"] = true FORMATS["UEF_CAS"] = true FORMATS["UNIFLEX_DSK"] = true -FORMATS["UPD765_DSK"] = true FORMATS["VDK_DSK"] = true FORMATS["VECTOR06_DSK"] = true FORMATS["VG5K_CAS"] = true diff --git a/src/lib/formats/pc_dsk.cpp b/src/lib/formats/pc_dsk.cpp index ef9efce3bf3..c814afbe6dc 100644 --- a/src/lib/formats/pc_dsk.cpp +++ b/src/lib/formats/pc_dsk.cpp @@ -12,133 +12,6 @@ #include #include "formats/pc_dsk.h" -#include "formats/basicdsk.h" - -struct pc_disk_sizes -{ - uint32_t image_size; - int sectors; - int heads; -}; - - - -static const struct pc_disk_sizes disk_sizes[] = -{ - { 8*1*40*512, 8, 1}, /* 5 1/4 inch double density single sided */ - { 8*2*40*512, 8, 2}, /* 5 1/4 inch double density */ - { 9*1*40*512, 9, 1}, /* 5 1/4 inch double density single sided */ - { 9*2*40*512, 9, 2}, /* 5 1/4 inch double density */ - {10*2*40*512, 10, 2}, /* 5 1/4 inch double density single sided */ - { 9*2*80*512, 9, 2}, /* 80 tracks 5 1/4 inch drives rare in PCs */ - { 9*2*80*512, 9, 2}, /* 3 1/2 inch double density */ - {15*2*80*512, 15, 2}, /* 5 1/4 inch high density (or japanese 3 1/2 inch high density) */ - {18*2*80*512, 18, 2}, /* 3 1/2 inch high density */ - {21*2*80*512, 21, 2}, /* 3 1/2 inch high density DMF */ - {36*2*80*512, 36, 2} /* 3 1/2 inch enhanced density */ -}; - - - -static floperr_t pc_dsk_compute_geometry(floppy_image_legacy *floppy, struct basicdsk_geometry *geometry) -{ - int i; - uint64_t size; - - memset(geometry, 0, sizeof(*geometry)); - size = floppy_image_size(floppy); - - for (i = 0; i < std::size(disk_sizes); i++) - { - if (disk_sizes[i].image_size == size) - { - geometry->sectors = disk_sizes[i].sectors; - geometry->heads = disk_sizes[i].heads; - geometry->sector_length = 512; - geometry->first_sector_id = 1; - geometry->tracks = (int) (size / disk_sizes[i].sectors / disk_sizes[i].heads / geometry->sector_length); - return FLOPPY_ERROR_SUCCESS; - } - } - - if (size >= 0x1a) - { - /* - * get info from boot sector. - * not correct on all disks - */ - uint8_t scl, spt, heads; - floppy_image_read(floppy, &scl, 0x0c, 1); - floppy_image_read(floppy, &spt, 0x18, 1); - floppy_image_read(floppy, &heads, 0x1A, 1); - - if (size == ((uint64_t) scl) * spt * heads * 0x200) - { - geometry->sectors = spt; - geometry->heads = heads; - geometry->sector_length = 512; - geometry->first_sector_id = 1; - geometry->tracks = scl; - return FLOPPY_ERROR_SUCCESS; - } - } - - return FLOPPY_ERROR_SUCCESS; -} - - - -static FLOPPY_IDENTIFY(pc_dsk_identify) -{ - floperr_t err; - struct basicdsk_geometry geometry; - - err = pc_dsk_compute_geometry(floppy, &geometry); - if (err) - return err; - - *vote = geometry.heads ? 100 : 0; - return FLOPPY_ERROR_SUCCESS; -} - - - -static FLOPPY_CONSTRUCT(pc_dsk_construct) -{ - floperr_t err; - struct basicdsk_geometry geometry; - - if (params) - { - /* create */ - memset(&geometry, 0, sizeof(geometry)); - geometry.heads = params->lookup_int(PARAM_HEADS); - geometry.tracks = params->lookup_int(PARAM_TRACKS); - geometry.sectors = params->lookup_int(PARAM_SECTORS); - geometry.first_sector_id = 1; - geometry.sector_length = 512; - } - else - { - /* open */ - err = pc_dsk_compute_geometry(floppy, &geometry); - if (err) - return err; - } - - return basicdsk_construct(floppy, &geometry); -} - - - -/* ----------------------------------------------------------------------- */ - -LEGACY_FLOPPY_OPTIONS_START( pc ) - LEGACY_FLOPPY_OPTION( pc_dsk, "dsk,ima,img,ufi,360", "PC floppy disk image", pc_dsk_identify, pc_dsk_construct, nullptr, - HEADS([1]-2) - TRACKS(40/[80]) - SECTORS(8/[9]/10/15/18/36)) -LEGACY_FLOPPY_OPTIONS_END pc_format::pc_format() : upd765_format(formats) { diff --git a/src/lib/formats/pc_dsk.h b/src/lib/formats/pc_dsk.h index 1d049360831..d53879611b9 100644 --- a/src/lib/formats/pc_dsk.h +++ b/src/lib/formats/pc_dsk.h @@ -15,11 +15,6 @@ #include "flopimg.h" #include "upd765_dsk.h" -/**************************************************************************/ - -LEGACY_FLOPPY_OPTIONS_EXTERN(pc); - - class pc_format : public upd765_format { public: