]> git.unchartedbackwaters.co.uk Git - francis/winuae.git/commitdiff
Reset all floppy state variables. Allow seek without inserted disk.
authorToni Wilen <twilen@winuae.net>
Sun, 14 Jan 2024 17:50:43 +0000 (19:50 +0200)
committerToni Wilen <twilen@winuae.net>
Sun, 14 Jan 2024 17:50:43 +0000 (19:50 +0200)
x86.cpp

diff --git a/x86.cpp b/x86.cpp
index 49cdaa5440a53daebcd4d6b1ad104289f74ab654..a4f8ba1feed29e15d6e7b9552eadb6bea5b6bfa4 100644 (file)
--- 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)