Common Source Code Project for Qt (a.k.a for FM-7).
Revision | 990d13b2db58121e47efc64654f94648da34b6ca (tree) |
---|---|
Zeit | 2017-08-12 03:25:53 |
Autor | K.Ohta <whatisthis.sowhat@gmai...> |
Commiter | K.Ohta |
[VM][FM7][FLOPPY] Fix crash when starting.
@@ -272,10 +272,10 @@ void FM7_MAINIO::set_fdc_fd1e(uint8_t val) | ||
272 | 272 | } |
273 | 273 | } |
274 | 274 | 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); | |
276 | 276 | //this->out_debug_log(_T("2D\n")); |
277 | 277 | } 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); | |
279 | 279 | //this->out_debug_log(_T("2DD\n")); |
280 | 280 | } |
281 | 281 | #endif |
@@ -51,25 +51,26 @@ | ||
51 | 51 | #define USE_BUBBLE1 |
52 | 52 | #define USE_BUBBLE2 |
53 | 53 | #define MAX_BUBBLE 2 |
54 | - | |
54 | +#define MAX_DRIVE 4 | |
55 | 55 | #elif defined(_FM7) |
56 | 56 | #define DEVICE_NAME "FUJITSU FM-7" |
57 | 57 | #define CONFIG_NAME "fm7" |
58 | 58 | #define CAPABLE_Z80 |
59 | 59 | #define DIPSWITCH_DEFAULT 0x000000000 |
60 | +#define MAX_DRIVE 4 | |
60 | 61 | |
61 | 62 | #elif defined(_FMNEW7) |
62 | 63 | #define DEVICE_NAME "FUJITSU FM-NEW7" |
63 | 64 | #define CONFIG_NAME "fmnew7" |
64 | 65 | #define CAPABLE_Z80 |
65 | 66 | #define DIPSWITCH_DEFAULT 0x000000000 |
67 | +#define MAX_DRIVE 4 | |
66 | 68 | |
67 | 69 | #elif defined(_FM77) || defined(_FM77L2) |
68 | 70 | # if defined(_FM77) |
69 | 71 | #define DEVICE_NAME "FUJITSU FM-77" |
70 | 72 | #define CONFIG_NAME "fm77" |
71 | 73 | #define DIPSWITCH_DEFAULT 0x00000001 |
72 | - | |
73 | 74 | # else |
74 | 75 | #define DEVICE_NAME "FUJITSU FM-77L2" |
75 | 76 | #define CONFIG_NAME "fm77l2" |
@@ -81,6 +82,7 @@ | ||
81 | 82 | # ifndef FM77_EXRAM_BANKS |
82 | 83 | # define FM77_EXRAM_BANKS 3 |
83 | 84 | # endif |
85 | +#define MAX_DRIVE 4 | |
84 | 86 | |
85 | 87 | #elif defined(_FM77L4) |
86 | 88 | #define DEVICE_NAME "FUJITSU FM-77L4" |
@@ -97,12 +99,14 @@ | ||
97 | 99 | # define FM77_EXRAM_BANKS 3 |
98 | 100 | # endif |
99 | 101 | #define DIPSWITCH_DEFAULT 0x00000003 |
102 | +#define MAX_DRIVE 4 | |
100 | 103 | |
101 | 104 | #elif defined(_FM77AV) |
102 | 105 | #define DEVICE_NAME "FUJITSU FM77AV" |
103 | 106 | #define CONFIG_NAME "fm77av" |
104 | 107 | #define _FM77AV_VARIANTS |
105 | 108 | #define DIPSWITCH_DEFAULT 0x80000001 |
109 | +#define MAX_DRIVE 2 | |
106 | 110 | |
107 | 111 | #elif defined(_FM77AV20) |
108 | 112 | #define DEVICE_NAME "FUJITSU FM77AV20" |
@@ -114,6 +118,7 @@ | ||
114 | 118 | //#define USE_DRIVE_TYPE 2 |
115 | 119 | #define CAPABLE_KANJI_CLASS2 |
116 | 120 | #define DIPSWITCH_DEFAULT 0x80000001 |
121 | +#define MAX_DRIVE 2 | |
117 | 122 | |
118 | 123 | #elif defined(_FM77AV20EX) |
119 | 124 | #define DEVICE_NAME "FUJITSU FM77AV20EX" |
@@ -126,6 +131,7 @@ | ||
126 | 131 | #define CAPABLE_DICTROM |
127 | 132 | #define CAPABLE_KANJI_CLASS2 |
128 | 133 | #define DIPSWITCH_DEFAULT 0x80000001 |
134 | +#define MAX_DRIVE 4 | |
129 | 135 | |
130 | 136 | #elif defined(_FM77AV40) |
131 | 137 | #define DEVICE_NAME "FUJITSU FM77AV40" |
@@ -141,6 +147,7 @@ | ||
141 | 147 | #define FM77_EXRAM_BANKS 12 |
142 | 148 | #endif |
143 | 149 | #define DIPSWITCH_DEFAULT 0x8000000d |
150 | +#define MAX_DRIVE 4 | |
144 | 151 | |
145 | 152 | #elif defined(_FM77AV40EX) |
146 | 153 | #define DEVICE_NAME "FUJITSU FM77AV40EX" |
@@ -156,6 +163,7 @@ | ||
156 | 163 | #define FM77_EXRAM_BANKS 12 |
157 | 164 | #endif |
158 | 165 | #define DIPSWITCH_DEFAULT 0x8000000d |
166 | +#define MAX_DRIVE 4 | |
159 | 167 | |
160 | 168 | #elif defined(_FM77AV40SX) |
161 | 169 | #define DEVICE_NAME "FUJITSU FM77AV40SX" |
@@ -171,6 +179,7 @@ | ||
171 | 179 | # define FM77_EXRAM_BANKS 12 |
172 | 180 | # endif |
173 | 181 | #define DIPSWITCH_DEFAULT 0x8000000d |
182 | +#define MAX_DRIVE 4 | |
174 | 183 | |
175 | 184 | #endif |
176 | 185 |
@@ -106,7 +106,13 @@ void MB8877::initialize() | ||
106 | 106 | { |
107 | 107 | DEVICE::initialize(); |
108 | 108 | // 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 | + } | |
110 | 116 | _drive_mask = _max_drive - 1; |
111 | 117 | for(int i = 0; i < _max_drive; i++) { |
112 | 118 | disk[i] = new DISK(emu); |