The FDC READ TRACK command should now operate properly.

This commit is contained in:
OBattler
2016-11-11 03:16:41 +01:00
parent 971eeedde7
commit beb4e7869d
17 changed files with 56 additions and 21 deletions

View File

@@ -7,6 +7,7 @@
#include "disc.h"
#include "dma.h"
#include "fdc.h"
#include "fdd.h"
#include "io.h"
#include "pic.h"
@@ -94,6 +95,8 @@ typedef struct FDC
int sc;
int satisfying_sectors;
sector_id_t read_track_sector;
} FDC;
static FDC fdc;
@@ -124,6 +127,11 @@ void fdc_reset()
// pclog("Reset FDC\n");
}
sector_id_t fdc_get_read_track_sector()
{
return fdc.read_track_sector;
}
int fdc_get_compare_condition()
{
switch (discint)
@@ -836,6 +844,10 @@ bad_command:
fdc.eot[fdc.drive] = fdc.params[5];
fdc.gap = fdc.params[6];
fdc.dtl = fdc.params[7];
fdc.read_track_sector.id.c = fdc.params[1];
fdc.read_track_sector.id.h = fdc.params[2];
fdc.read_track_sector.id.r = 1;
fdc.read_track_sector.id.n = fdc.params[4];
if (fdc.config & 0x40)
{
if (fdc.params[1] != fdc.track[fdc.drive])
@@ -1281,6 +1293,7 @@ void fdc_callback()
case 2: /*Read track*/
readflash = 1;
fdc.eot[fdc.drive]--;
fdc.read_track_sector.id.r++;
// pclog("Read a track callback, eot=%i\n", fdc.eot[fdc.drive]);
if (!fdc.eot[fdc.drive] || fdc.tc)
{