static int dskdmaen, dsklength, dsklength2, dsklen, dsklen2;
static uae_u16 dskbytr_val, dskbytr_val_prev;
static bool dskbytr_delay;
-static uae_u32 dskpt;
+static uae_u32 dskpt, dskpt_start;
static bool fifo_filled;
static uae_u16 fifo[3];
static int fifo_inuse[3];
dsklen = 0;
if (disk_debug_logging > 0) {
int dr;
- write_log (_T("disk dma finished %08X MFMpos="), dskpt);
+ write_log (_T("disk dma finished %08X-%08X (%04X, %d) MFMpos="), dskpt_start, dskpt, (dskpt - dskpt_start) / 2, (dskpt - dskpt_start) / 2);
for (dr = 0; dr < MAX_FLOPPY_DRIVES; dr++)
write_log (_T("%d%s"), floppy[dr].mfmpos, dr < MAX_FLOPPY_DRIVES - 1 ? _T(",") : _T(""));
write_log (_T("\n"));
void event_DISK_handler(uae_u32 data)
{
int flag = data & 255;
+ int hpos = current_hpos();
- DISK_update(current_hpos());
+#if DISK_DEBUG_X > 0
+ write_log("disk event %02x %d %d\n", flag, hpos, disk_hpos >> 8);
+#endif
+ DISK_update(hpos);
DISK_update_predict();
}
fifo_inuse[i] = false;
}
fifo_filled = 0;
+ dskpt_start = dskpt;
if (dskdmaen == DSKDMA_WRITE) {
word = 0;