From a756f3c5e12c2acc8c75030118909a645d9b3694 Mon Sep 17 00:00:00 2001 From: OBattler Date: Fri, 2 Feb 2018 05:34:39 +0100 Subject: [PATCH] The FDC SENSE INTERRUPT STATUS command now once again returns bad command if neither FINTR nor reset stat are set and the FDC is not in PCjr mode, fixes Red Had Linux 2.0 hang. --- src/floppy/fdc.c | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/src/floppy/fdc.c b/src/floppy/fdc.c index a913e8439..39d88a2cb 100644 --- a/src/floppy/fdc.c +++ b/src/floppy/fdc.c @@ -9,7 +9,7 @@ * Implementation of the NEC uPD-765 and compatible floppy disk * controller. * - * Version: @(#)fdc->c 1.0.12 2018/02/02 + * Version: @(#)fdc->c 1.0.13 2018/02/02 * * Authors: Sarah Walker, * Miran Grca, @@ -862,10 +862,13 @@ fdc_write(uint16_t addr, uint8_t val, void *priv) fdc->stat |= 0x90; break; case 0x08: /*Sense interrupt status*/ - fdc_log("fdc->fintr = %i, fdc->reset_stat = %i\n", fdc->fintr, fdc->reset_stat); - fdc->lastdrive = fdc->drive; - fdc->pos = 0; - fdc_sis(fdc); + if (fdc->fintr || fdc->reset_stat || (fdc->flags & FDC_FLAG_PCJR)) { + fdc_log("fdc->fintr = %i, fdc->reset_stat = %i\n", fdc->fintr, fdc->reset_stat); + fdc->lastdrive = fdc->drive; + fdc->pos = 0; + fdc_sis(fdc); + } else + fdc_bad_command(fdc); break; case 0x0a: /*Read sector ID*/ fdc->pnum = 0;