diff options
Diffstat (limited to 'src/devices/imagedev/flopdrv.cpp')
-rw-r--r-- | src/devices/imagedev/flopdrv.cpp | 19 |
1 files changed, 9 insertions, 10 deletions
diff --git a/src/devices/imagedev/flopdrv.cpp b/src/devices/imagedev/flopdrv.cpp index 75da2d10f5d..e19340c40c9 100644 --- a/src/devices/imagedev/flopdrv.cpp +++ b/src/devices/imagedev/flopdrv.cpp @@ -375,7 +375,7 @@ void legacy_floppy_image_device::floppy_drive_write_sector_data(int side, int in } } -void legacy_floppy_image_device::floppy_install_load_proc(void (*proc)(device_image_interface &image)) +void legacy_floppy_image_device::floppy_install_load_proc(void (*proc)(device_image_interface &image, bool is_created)) { m_load_proc = proc; } @@ -417,7 +417,7 @@ void legacy_floppy_image_device::floppy_drive_set_controller(device_t *controlle m_controller = controller; } -int legacy_floppy_image_device::internal_floppy_device_load(int create_format, util::option_resolution *create_args) +int legacy_floppy_image_device::internal_floppy_device_load(bool is_create, int create_format, util::option_resolution *create_args) { floperr_t err; const struct FloppyFormat *floppy_options; @@ -428,7 +428,7 @@ int legacy_floppy_image_device::internal_floppy_device_load(int create_format, u interface(image); /* figure out the floppy options */ floppy_options = m_config->formats; - if (has_been_created()) + if (is_create) { /* creating an image */ assert(create_format >= 0); @@ -452,6 +452,10 @@ int legacy_floppy_image_device::internal_floppy_device_load(int create_format, u /* disk changed */ m_dskchg = CLEAR_LINE; + // If we have one of our hacky load procs, call it + if (m_load_proc) + m_load_proc(*this, is_create); + return IMAGE_INIT_PASS; error: @@ -832,17 +836,12 @@ void legacy_floppy_image_device::device_config_complete() bool legacy_floppy_image_device::call_create(int format_type, util::option_resolution *format_options) { - return internal_floppy_device_load(format_type, format_options); + return internal_floppy_device_load(true, format_type, format_options); } bool legacy_floppy_image_device::call_load() { - int retVal = internal_floppy_device_load(-1, nullptr); - if (retVal==IMAGE_INIT_PASS) { - /* if we have one of our hacky unload procs, call it */ - if (m_load_proc) - m_load_proc(*this); - } + int retVal = internal_floppy_device_load(false, -1, nullptr); /* push disk halfway into drive */ m_wpt = CLEAR_LINE; |