diff --git a/src/disc.c b/src/disc.c index 9ca46e1..f9664eb 100644 --- a/src/disc.c +++ b/src/disc.c @@ -93,7 +93,7 @@ void disc_load(int drive, char *fn) drive_empty[drive] = 0; disc_changed[drive] = 1; strcpy(discfns[drive], fn); - fdd_seek(drive, 0); + fdd_disc_changed(drive); return; } c++; diff --git a/src/fdd.c b/src/fdd.c index 6308e4e..7d978a1 100644 --- a/src/fdd.c +++ b/src/fdd.c @@ -100,6 +100,14 @@ void fdd_seek(int drive, int track_diff) disctime = 5000; } +void fdd_disc_changed(int drive) +{ + drive ^= fdd_swap; + + /*Force reload of current track data*/ + disc_seek(drive, fdd[drive].track); +} + int fdd_track0(int drive) { drive ^= fdd_swap; diff --git a/src/fdd.h b/src/fdd.h index 3a5c457..5581b73 100644 --- a/src/fdd.h +++ b/src/fdd.h @@ -7,6 +7,7 @@ int fdd_can_read_medium(int drive); int fdd_doublestep_40(int drive); int fdd_is_525(int drive); int fdd_is_ed(int drive); +void fdd_disc_changed(int drive); void fdd_set_type(int drive, int type); int fdd_get_type(int drive);