floppy: Created floppies need to be initialized the same way as loaded floppies

This commit is contained in:
Dirk Best 2018-05-08 17:27:04 +02:00
parent 7d4452b0f9
commit 650ec0fe13
2 changed files with 29 additions and 24 deletions

View File

@ -400,6 +400,31 @@ floppy_image_format_t *floppy_image_device::identify(std::string filename)
return best_format;
}
void floppy_image_device::init_floppy_load(bool write_supported)
{
revolution_start_time = mon ? attotime::never : machine().time();
revolution_count = 0;
index_resync();
wpt = 1; // disk sleeve is covering the sensor
if (!cur_wpt_cb.isnull())
cur_wpt_cb(this, wpt);
wpt = is_readonly() || (!write_supported);
if (!cur_wpt_cb.isnull())
cur_wpt_cb(this, wpt);
if (motor_always_on) {
// When disk is inserted, start motor
mon_w(0);
} else if(!mon)
ready_counter = 2;
if (dskchg_writable)
dskchg = 1;
}
image_init_result floppy_image_device::call_load()
{
io_generic io;
@ -434,32 +459,13 @@ image_init_result floppy_image_device::call_load()
}
output_format = is_readonly() ? nullptr : best_format;
revolution_start_time = mon ? attotime::never : machine().time();
revolution_count = 0;
index_resync();
image_dirty = false;
wpt = 1; // disk sleeve is covering the sensor
if (!cur_wpt_cb.isnull())
cur_wpt_cb(this, wpt);
wpt = is_readonly() || (output_format == nullptr);
if (!cur_wpt_cb.isnull())
cur_wpt_cb(this, wpt);
init_floppy_load(output_format != nullptr);
if (!cur_load_cb.isnull())
return cur_load_cb(this);
if (motor_always_on) {
// When disk is inserted, start motor
mon_w(0);
} else if(!mon)
ready_counter = 2;
if (dskchg_writable)
dskchg = 1;
return image_init_result::PASS;
}
@ -519,9 +525,7 @@ image_init_result floppy_image_device::call_create(int format_type, util::option
return image_init_result::FAIL;
}
if (motor_always_on)
// When disk is inserted, start motor
mon_w(0);
init_floppy_load(output_format != nullptr);
return image_init_result::PASS;
}
@ -2355,4 +2359,3 @@ void ibm_6360::handled_variants(uint32_t *variants, int &var_count) const
var_count = 0;
variants[var_count++] = floppy_image::SSSD;
}

View File

@ -162,6 +162,8 @@ protected:
virtual void setup_characteristics() = 0;
void init_floppy_load(bool write_supported);
floppy_image_format_t *input_format;
floppy_image_format_t *output_format;
floppy_image *image;