OSDN Git Service

[VM][MB8877][FM7] Fix freezing with OS-9 with 2DD drive/image.Thanks to Ryu Takegami.
authorK.Ohta <whatisthis.sowhat@gmail.com>
Thu, 28 Dec 2017 05:35:21 +0000 (14:35 +0900)
committerK.Ohta <whatisthis.sowhat@gmail.com>
Thu, 28 Dec 2017 05:35:21 +0000 (14:35 +0900)
source/src/vm/mb8877.cpp

index 610ab34..8b52a02 100644 (file)
@@ -1413,6 +1413,13 @@ uint8_t MB8877::search_track()
                           (disk[drvreg]->drive_type == DRIVE_TYPE_144)) {
                                track >>= 1;
                        }
+               } else {        // OS-9 2DD Access fix by Ryu Takegami
+                       if((disk[drvreg]->media_type != MEDIA_TYPE_2D) &&
+                          (disk[drvreg]->media_type != MEDIA_TYPE_UNK)) {
+                               if(disk[drvreg]->drive_type == DRIVE_TYPE_2D) {
+                                       track <<= 1;
+                               }
+                       }
                }
        }
 //#endif
@@ -1468,6 +1475,13 @@ uint8_t MB8877::search_sector()
                           (disk[drvreg]->drive_type == DRIVE_TYPE_144)) {
                                track >>= 1;
                        }
+               } else {        // OS-9 2DD Access fix by Ryu Takegami
+                       if((disk[drvreg]->media_type != MEDIA_TYPE_2D) &&
+                          (disk[drvreg]->media_type != MEDIA_TYPE_UNK)) {
+                               if(disk[drvreg]->drive_type == DRIVE_TYPE_2D) {
+                                       track <<= 1;
+                               }
+                       }
                }
        }
 //#endif
@@ -1557,6 +1571,13 @@ uint8_t MB8877::search_addr()
                           (disk[drvreg]->drive_type == DRIVE_TYPE_144)) {
                                track >>= 1;
                        }
+               } else {        // OS-9 2DD Access fix by Ryu Takegami
+                       if((disk[drvreg]->media_type != MEDIA_TYPE_2D) &&
+                          (disk[drvreg]->media_type != MEDIA_TYPE_UNK)) {
+                               if(disk[drvreg]->drive_type == DRIVE_TYPE_2D) {
+                                       track <<= 1;
+                               }
+                       }
                }
        }
 //#endif