From: Hervé Poussineau Date: Mon, 6 Feb 2012 21:29:11 +0000 (+0100) Subject: fdc: fix seek command, which shouldn't check tracks X-Git-Tag: v1.1-rc0~290^2~18 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=b072a3c85da1391d86aaea60451738131034c7c3;p=thirdparty%2Fqemu.git fdc: fix seek command, which shouldn't check tracks The seek command just sends step pulses to the drive and doesn't care if there is a medium inserted of if it is banging the head against the drive. Signed-off-by: Hervé Poussineau Signed-off-by: Kevin Wolf --- diff --git a/hw/fdc.c b/hw/fdc.c index cc03326608a..7879b70bc69 100644 --- a/hw/fdc.c +++ b/hw/fdc.c @@ -1622,13 +1622,16 @@ static void fdctrl_handle_seek(FDCtrl *fdctrl, int direction) SET_CUR_DRV(fdctrl, fdctrl->fifo[1] & FD_DOR_SELMASK); cur_drv = get_cur_drv(fdctrl); fdctrl_reset_fifo(fdctrl); + /* The seek command just sends step pulses to the drive and doesn't care if + * there is a medium inserted of if it's banging the head against the drive. + */ if (fdctrl->fifo[2] > cur_drv->max_track) { - fdctrl_raise_irq(fdctrl, FD_SR0_ABNTERM | FD_SR0_SEEK); + cur_drv->track = cur_drv->max_track; } else { cur_drv->track = fdctrl->fifo[2]; - /* Raise Interrupt */ - fdctrl_raise_irq(fdctrl, FD_SR0_SEEK); } + /* Raise Interrupt */ + fdctrl_raise_irq(fdctrl, FD_SR0_SEEK); } static void fdctrl_handle_perpendicular_mode(FDCtrl *fdctrl, int direction)