From 9ab68281287f5a8a6d84ed9f984dfeb17429dbba Mon Sep 17 00:00:00 2001 From: Toni Wilen Date: Sun, 14 Jan 2024 19:50:43 +0200 Subject: [PATCH] Reset all floppy state variables. Allow seek without inserted disk. --- x86.cpp | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/x86.cpp b/x86.cpp index 49cdaa54..a4f8ba1f 100644 --- a/x86.cpp +++ b/x86.cpp @@ -589,6 +589,20 @@ static void floppy_reset(void) floppy_dir = 0; floppy_did_reset = true; floppy_specify_pio = false; + floppy_pio_active = 0; + floppy_dpc = 0; + floppy_cmd_len = 0; + floppy_num = 0; + floppy_delay_hsync = 0; + floppy_irq = false; + floppy_pio_len = 0; + floppy_pio_cnt = 0; + floppy_rate = 0; + for (int i = 0; i < 4; i++) { + floppy_seeking[i] = 0; + floppy_seekcyl[i] = 0; + } + if (xb->type == TYPE_2286) { // apparently A2286 BIOS AT driver assumes // floppy reset also resets IDE. @@ -634,11 +648,6 @@ static void do_floppy_seek(int num, int error) bool valid_floppy = disk_reserved_getinfo(num, &fr); if (floppy_seekcyl[num] != pcf->phys_cyl) { - if (!valid_floppy || !fr.img) { - error = 1; - goto done; - } - pcf->disk_changed = false; if (floppy_seekcyl[num] > pcf->phys_cyl) -- 2.47.3