OSDN Git Service

[VM][FM77AV] Fix crash with substitution ROM set.See http://hanabi.2ch.net/test/read...
authorK.Ohta <whatisthis.sowhat@gmail.com>
Mon, 30 May 2016 05:39:42 +0000 (14:39 +0900)
committerK.Ohta <whatisthis.sowhat@gmail.com>
Mon, 30 May 2016 05:41:55 +0000 (14:41 +0900)
This issue causes this ROM checkes inserting FDs beyond 0: to 3: after booting.

source/src/vm/fm7/fm7.cpp
source/src/vm/fm7/fm7.h

index 42f094d..ba574a2 100644 (file)
@@ -378,7 +378,7 @@ void VM::connect_bus(void)
 #if defined(_FM8) || (_FM7) || (_FMNEW7)
        if(connect_320kfdc) {
 #endif         
-               for(int i = 0; i < 2; i++) {
+               for(int i = 0; i < 4; i++) {
 #if defined(_FM77AV20) || defined(_FM77AV20EX) || \
        defined(_FM77AV40SX) || defined(_FM77AV40EX) || defined(_FM77AV40SX)
                        fdc->set_drive_type(i, DRIVE_TYPE_2DD);
@@ -394,14 +394,15 @@ void VM::connect_bus(void)
        
 #if defined(_FM8) || (_FM7) || (_FMNEW7)
        if(connect_1Mfdc) {
-#endif         
-#if defined(_FM77) || defined(_FM77L4)
-               for(int i = 2; i < 4; i++) {
-                       fdc->set_drive_type(i, DRIVE_TYPE_2HD);
-                       fdc->set_drive_rpm(i, 360);
-                       fdc->set_drive_mfm(i, true);
-               }
 #endif
+// ToDo: Implement another FDC for 1MB (2HD or 8''), this is used by FM-8 to FM-77? Not FM77AV or later? I still know this.
+//#if defined(_FM77) || defined(_FM77L4)
+//             for(int i = 0; i < 4; i++) {
+//                     fdc->set_drive_type(i, DRIVE_TYPE_2HD);
+//                     fdc->set_drive_rpm(i, 360);
+//                     fdc->set_drive_mfm(i, true);
+//             }
+//#endif
 #if defined(_FM8) || (_FM7) || (_FMNEW7)
        }
 #endif 
index d0690dd..9264a87 100644 (file)
 #define USE_FD1
 #define USE_FD2
 #define MAX_FD 2
-#define MAX_DRIVE 2
+#define MAX_DRIVE 4
 
 #if defined(HAS_2HD)
 #define USE_FD3
 #define USE_FD4
 #undef  MAX_FD
 #undef  MAX_DRIVE
-#define MAX_FD 4
-#define MAX_DRIVE              4
+#define MAX_FD 6
+#define MAX_DRIVE 8
 #endif