From 21d813cc34686570de82c192941083e00069ec79 Mon Sep 17 00:00:00 2001 From: OBattler Date: Mon, 5 Sep 2016 20:53:46 +0200 Subject: [PATCH] The side processed by poller is now correctly selected by the FDC's HDSEL parameter rather than the H field of the requested sector ID. --- src/disc_86f.c | 2 +- src/disc_fdi.c | 11 ++++++----- src/disc_sector_86box.c | 6 +++--- 3 files changed, 10 insertions(+), 9 deletions(-) diff --git a/src/disc_86f.c b/src/disc_86f.c index 255a59b68..4323b47f4 100644 --- a/src/disc_86f.c +++ b/src/disc_86f.c @@ -1185,7 +1185,7 @@ void d86f_poll_format(int drive, int side) void d86f_poll() { int drive = d86f_drive; - int side = d86f[drive].req_sector.id.h; + int side = fdd_get_head(drive); if (d86f[drive].state == STATE_FORMAT) { diff --git a/src/disc_fdi.c b/src/disc_fdi.c index 04c98c3ec..97ff1022a 100644 --- a/src/disc_fdi.c +++ b/src/disc_fdi.c @@ -322,13 +322,14 @@ void fdi_poll() { int tempi, c; int bitcount; - + int side = fdd_get_head(drive); + for (bitcount = 0; bitcount < 16; bitcount++) { - if (fdi_pos >= fdi[fdi_drive].tracklen[fdi_side][fdi_density]) + if (fdi_pos >= fdi[fdi_drive].tracklen[side][fdi_density]) { fdi_pos = 0; - if (fdi[fdi_drive].tracklen[fdi_side][fdi_density]) + if (fdi[fdi_drive].tracklen[side][fdi_density]) fdc_indexpulse(); else { @@ -340,7 +341,7 @@ void fdi_poll() } } } - tempi = fdi[fdi_drive].track_data[fdi_side][fdi_density][((fdi_pos >> 3) & 0xFFFF) ^ 1] & (1 << (7 - (fdi_pos & 7))); + tempi = fdi[fdi_drive].track_data[side][fdi_density][((fdi_pos >> 3) & 0xFFFF) ^ 1] & (1 << (7 - (fdi_pos & 7))); fdi_pos++; fdi_buffer <<= 1; fdi_buffer |= (tempi ? 1 : 0); @@ -352,7 +353,7 @@ void fdi_poll() } if (!fdi_inread && !fdi_inreadaddr) return; - if (fdi_pos == fdi[fdi_drive].trackindex[fdi_side][fdi_density]) + if (fdi_pos == fdi[fdi_drive].trackindex[side][fdi_density]) { fdi_revs++; if (fdi_revs == 3) diff --git a/src/disc_sector_86box.c b/src/disc_sector_86box.c index 999f324a2..773a2f2ef 100644 --- a/src/disc_sector_86box.c +++ b/src/disc_sector_86box.c @@ -277,7 +277,7 @@ int disc_sector_reset_state(int drive) int disc_sector_find_sector(int drive) { - int side = disc_sector_side[drive]; + int side = fdd_get_head(drive); int i = 0; for (i = 0; i < disc_sector_count[drive][side]; i++) { @@ -373,7 +373,7 @@ void disc_sector_poll() sector_t *s; int data; int drive = disc_sector_drive; - int side = disc_sector_side[drive]; + int side = fdd_get_head(drive); int found_sector = 0; int b = 0; @@ -582,7 +582,7 @@ void disc_sector_poll() found_sector = disc_sector_find_sector(drive); // pclog("Found sector: %i\n", found_sector); cur_sector[drive] = found_sector; - last_sector[drive] = &disc_sector_data[drive][disc_sector_side[drive]][found_sector]; + last_sector[drive] = &disc_sector_data[drive][side][found_sector]; cur_rate[drive] = last_sector[drive]->rate; if (!(disc_sector_can_read_address(drive))) last_sector[drive] = NULL;