Re-implemented FDC Read a Track command. King's Quest 1 booter works again.

This commit is contained in:
TomW 2015-10-04 17:52:38 +01:00
commit fba5891d95
4 changed files with 56 additions and 39 deletions

View file

@ -23,6 +23,7 @@ static int img_inread, img_readpos, img_inwrite, img_inreadaddr;
static int img_notfound;
static int img_rsector=0;
static int img_informat=0;
static int img_sector_next;
static int img_pause = 0;
static int img_index = 6250;
@ -128,7 +129,18 @@ void img_readsector(int drive, int sector, int track, int side, int rate)
if (drive_type[drive] && rate == 1)
rate = 2;
img_sector = sector - 1;
if (sector == SECTOR_FIRST)
{
img_sector = 1 - 1;
img_sector_next = 2;
}
else if (sector == SECTOR_NEXT)
{
img_sector = img_sector_next - 1;
img_sector_next++;
}
else
img_sector = sector - 1;
img_track = track;
img_side = side;
img_drive = drive;
@ -136,7 +148,7 @@ void img_readsector(int drive, int sector, int track, int side, int rate)
if (!img[drive].f || (side && img[drive].sides == 1) ||
(rate != img[drive].rate) || (track != disc_track[drive]) ||
sector > img[drive].sectors)
img_sector > img[drive].sectors)
{
// pclog("Sector not found rate %i,%i track %i,%i\n", rate, img[drive].rate, track, disc_track[drive]);
img_notfound=500;