• R/O
  • HTTP
  • SSH
  • HTTPS

common_source_project-fm7: Commit

Common Source Code Project for Qt (a.k.a for FM-7).


Commit MetaInfo

Revision990d13b2db58121e47efc64654f94648da34b6ca (tree)
Zeit2017-08-12 03:25:53
AutorK.Ohta <whatisthis.sowhat@gmai...>
CommiterK.Ohta

Log Message

[VM][FM7][FLOPPY] Fix crash when starting.

Ändern Zusammenfassung

Diff

--- a/source/src/vm/fm7/floppy.cpp
+++ b/source/src/vm/fm7/floppy.cpp
@@ -272,10 +272,10 @@ void FM7_MAINIO::set_fdc_fd1e(uint8_t val)
272272 }
273273 }
274274 if((val & 0x40) != 0) {
275- for(drive = 0; drive < MAX_FD; drive++) fdc->set_drive_type(drive, DRIVE_TYPE_2D);
275+ for(drive = 0; drive < MAX_DRIVE; drive++) fdc->set_drive_type(drive, DRIVE_TYPE_2D);
276276 //this->out_debug_log(_T("2D\n"));
277277 } else {
278- for(drive = 0; drive < MAX_FD; drive++) fdc->set_drive_type(drive, DRIVE_TYPE_2DD);
278+ for(drive = 0; drive < MAX_DRIVE; drive++) fdc->set_drive_type(drive, DRIVE_TYPE_2DD);
279279 //this->out_debug_log(_T("2DD\n"));
280280 }
281281 #endif
--- a/source/src/vm/fm7/fm7.h
+++ b/source/src/vm/fm7/fm7.h
@@ -51,25 +51,26 @@
5151 #define USE_BUBBLE1
5252 #define USE_BUBBLE2
5353 #define MAX_BUBBLE 2
54-
54+#define MAX_DRIVE 4
5555 #elif defined(_FM7)
5656 #define DEVICE_NAME "FUJITSU FM-7"
5757 #define CONFIG_NAME "fm7"
5858 #define CAPABLE_Z80
5959 #define DIPSWITCH_DEFAULT 0x000000000
60+#define MAX_DRIVE 4
6061
6162 #elif defined(_FMNEW7)
6263 #define DEVICE_NAME "FUJITSU FM-NEW7"
6364 #define CONFIG_NAME "fmnew7"
6465 #define CAPABLE_Z80
6566 #define DIPSWITCH_DEFAULT 0x000000000
67+#define MAX_DRIVE 4
6668
6769 #elif defined(_FM77) || defined(_FM77L2)
6870 # if defined(_FM77)
6971 #define DEVICE_NAME "FUJITSU FM-77"
7072 #define CONFIG_NAME "fm77"
7173 #define DIPSWITCH_DEFAULT 0x00000001
72-
7374 # else
7475 #define DEVICE_NAME "FUJITSU FM-77L2"
7576 #define CONFIG_NAME "fm77l2"
@@ -81,6 +82,7 @@
8182 # ifndef FM77_EXRAM_BANKS
8283 # define FM77_EXRAM_BANKS 3
8384 # endif
85+#define MAX_DRIVE 4
8486
8587 #elif defined(_FM77L4)
8688 #define DEVICE_NAME "FUJITSU FM-77L4"
@@ -97,12 +99,14 @@
9799 # define FM77_EXRAM_BANKS 3
98100 # endif
99101 #define DIPSWITCH_DEFAULT 0x00000003
102+#define MAX_DRIVE 4
100103
101104 #elif defined(_FM77AV)
102105 #define DEVICE_NAME "FUJITSU FM77AV"
103106 #define CONFIG_NAME "fm77av"
104107 #define _FM77AV_VARIANTS
105108 #define DIPSWITCH_DEFAULT 0x80000001
109+#define MAX_DRIVE 2
106110
107111 #elif defined(_FM77AV20)
108112 #define DEVICE_NAME "FUJITSU FM77AV20"
@@ -114,6 +118,7 @@
114118 //#define USE_DRIVE_TYPE 2
115119 #define CAPABLE_KANJI_CLASS2
116120 #define DIPSWITCH_DEFAULT 0x80000001
121+#define MAX_DRIVE 2
117122
118123 #elif defined(_FM77AV20EX)
119124 #define DEVICE_NAME "FUJITSU FM77AV20EX"
@@ -126,6 +131,7 @@
126131 #define CAPABLE_DICTROM
127132 #define CAPABLE_KANJI_CLASS2
128133 #define DIPSWITCH_DEFAULT 0x80000001
134+#define MAX_DRIVE 4
129135
130136 #elif defined(_FM77AV40)
131137 #define DEVICE_NAME "FUJITSU FM77AV40"
@@ -141,6 +147,7 @@
141147 #define FM77_EXRAM_BANKS 12
142148 #endif
143149 #define DIPSWITCH_DEFAULT 0x8000000d
150+#define MAX_DRIVE 4
144151
145152 #elif defined(_FM77AV40EX)
146153 #define DEVICE_NAME "FUJITSU FM77AV40EX"
@@ -156,6 +163,7 @@
156163 #define FM77_EXRAM_BANKS 12
157164 #endif
158165 #define DIPSWITCH_DEFAULT 0x8000000d
166+#define MAX_DRIVE 4
159167
160168 #elif defined(_FM77AV40SX)
161169 #define DEVICE_NAME "FUJITSU FM77AV40SX"
@@ -171,6 +179,7 @@
171179 # define FM77_EXRAM_BANKS 12
172180 # endif
173181 #define DIPSWITCH_DEFAULT 0x8000000d
182+#define MAX_DRIVE 4
174183
175184 #endif
176185
--- a/source/src/vm/mb8877.cpp
+++ b/source/src/vm/mb8877.cpp
@@ -106,7 +106,13 @@ void MB8877::initialize()
106106 {
107107 DEVICE::initialize();
108108 // initialize d88 handler
109- _max_drive = osd->get_feature_int_value(_T("MAX_DRIVE"));
109+ if(osd->check_feature(_T("MAX_DRIVE"))) {
110+ _max_drive = osd->get_feature_int_value(_T("MAX_DRIVE"));
111+ } else if(osd->check_feature(_T("MAX_FD"))) {
112+ _max_drive = osd->get_feature_int_value(_T("MAX_FD"));
113+ } else {
114+ _max_drive = 1;
115+ }
110116 _drive_mask = _max_drive - 1;
111117 for(int i = 0; i < _max_drive; i++) {
112118 disk[i] = new DISK(emu);
Show on old repository browser