diff --git a/hw/fdc.c b/hw/fdc.c index 930c0e21b8d94060c90739e6b2643d24e052279d..073dafa4c884f215f25cb56b08dabaffac71312f 100644 --- a/hw/fdc.c +++ b/hw/fdc.c @@ -888,7 +888,7 @@ static void fdctrl_start_transfer (fdctrl_t *fdctrl, int direction) fdctrl->data_len = fdctrl->fifo[8]; } else { int tmp; - fdctrl->data_len = 128 << fdctrl->fifo[5]; + fdctrl->data_len = 128 << (fdctrl->fifo[5] > 7 ? 7 : fdctrl->fifo[5]); tmp = (cur_drv->last_sect - ks + 1); if (fdctrl->fifo[0] & 0x80) tmp += cur_drv->last_sect;