Disc function pointers cleared when disc ejected.

Read address on an ejected disc now times out.
Write protect bit in ST3 now set correctly (Sense Drive Status command).
Fixes discs on Windows 95.
This commit is contained in:
TomW 2015-06-21 14:51:58 +01:00
commit de6369b82f
2 changed files with 8 additions and 2 deletions

View file

@ -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)

View file

@ -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;