diff --git a/src/disc.c b/src/disc.c index df5461b..6484e28 100644 --- a/src/disc.c +++ b/src/disc.c @@ -104,6 +104,12 @@ void disc_close(int drive) if (loaders[driveloaders[drive]].close) loaders[driveloaders[drive]].close(drive); drive_empty[drive] = 1; discfns[drive][0] = 0; + drives[drive].poll = NULL; + drives[drive].seek = NULL; + drives[drive].readsector = NULL; + drives[drive].writesector = NULL; + drives[drive].readaddress = NULL; + drives[drive].format = NULL; } int disc_notfound=0; @@ -189,8 +195,6 @@ void disc_readaddress(int drive, int track, int side, int density) { if (drives[drive].readaddress) drives[drive].readaddress(drive, track, side, density); - else - disc_notfound = 1000; } void disc_format(int drive, int track, int side, int density) diff --git a/src/fdc.c b/src/fdc.c index e4719ca..04d82d3 100644 --- a/src/fdc.c +++ b/src/fdc.c @@ -517,6 +517,8 @@ void fdc_callback() fdc.res[10] = (fdc.params[0] & 7) | 0x28; if (!fdc.track[fdc.drive]) fdc.res[10] |= 0x10; + if (writeprot[fdc.drive]) + fdc.res[10] |= 0x40; fdc.stat = (fdc.stat & 0xf) | 0xd0; paramstogo = 1;