static void disk_dmafinished(void)
{
- INTREQ_INT(1, 0);
+ INTREQ_INT(1, 1);
if (floppy_writemode > 0)
floppy_writemode = 0;
dskdmaen = DSKDMA_OFF;
return 1;
}
if (dsklength > 0) {
- // DSKLEN == 1: finish without DMA transfer.
- if (dsklength == 1 && dsklength2 == 1) {
- disk_dmafinished();
- return 0;
- }
// fast disk modes, just flush the fifo
if (currprefs.floppy_speed > 100 && fifo_inuse[0] && fifo_inuse[1] && fifo_inuse[2]) {
while (fifo_inuse[0]) {
}
}
}
-
- /* instantly finish dma if dsklen==0 and wordsync detected */
- if (dskdmaen != DSKDMA_OFF && dma_enable && dsklength2 == 0 && dsklength == 0) {
- disk_dmafinished();
- }
-
if (!done_jitter) {
update_jitter();
done_jitter = true;
dsklen2 = dsklen = v;
dsklength2 = dsklength = dsklen & 0x3fff;
- if (0 && dsklength > 1) {
- dsklength++;
- dsklength2++;
- }
+ if ((v & 0x8000) && !(prevlen & 0x8000)) {
+ bitoffset = 15;
+ }
if ((v & 0x8000) && (prevlen & 0x8000)) {
if (dskdmaen == DSKDMA_READ && !(v & 0x4000)) {
// update only currently active DMA length, don't change DMA state