Fixed Host MIDI Out Device ID saving;

Did the UI-related preparations for adding removable hard disks.
This commit is contained in:
OBattler
2017-05-18 21:51:11 +02:00
parent d7676794d2
commit c669a05662
9 changed files with 268 additions and 96 deletions

View File

@@ -92,6 +92,118 @@ BEGIN
MENUITEM SEPARATOR MENUITEM SEPARATOR
MENUITEM "&Image...", IDM_CDROM_4_IMAGE MENUITEM "&Image...", IDM_CDROM_4_IMAGE
END END
POPUP "Removable disk 01"
BEGIN
MENUITEM "E&mpty", IDM_RDISK_01_EMPTY
MENUITEM "&Reload previous disc", IDM_RDISK_01_RELOAD
MENUITEM SEPARATOR
MENUITEM "&Image...", IDM_RDISK_01_IMAGE
END
POPUP "Removable disk 02"
BEGIN
MENUITEM "E&mpty", IDM_RDISK_02_EMPTY
MENUITEM "&Reload previous disc", IDM_RDISK_02_RELOAD
MENUITEM SEPARATOR
MENUITEM "&Image...", IDM_RDISK_02_IMAGE
END
POPUP "Removable disk 03"
BEGIN
MENUITEM "E&mpty", IDM_RDISK_03_EMPTY
MENUITEM "&Reload previous disc", IDM_RDISK_03_RELOAD
MENUITEM SEPARATOR
MENUITEM "&Image...", IDM_RDISK_03_IMAGE
END
POPUP "Removable disk 04"
BEGIN
MENUITEM "E&mpty", IDM_RDISK_04_EMPTY
MENUITEM "&Reload previous disc", IDM_RDISK_04_RELOAD
MENUITEM SEPARATOR
MENUITEM "&Image...", IDM_RDISK_04_IMAGE
END
POPUP "Removable disk 05"
BEGIN
MENUITEM "E&mpty", IDM_RDISK_05_EMPTY
MENUITEM "&Reload previous disc", IDM_RDISK_05_RELOAD
MENUITEM SEPARATOR
MENUITEM "&Image...", IDM_RDISK_05_IMAGE
END
POPUP "Removable disk 06"
BEGIN
MENUITEM "E&mpty", IDM_RDISK_06_EMPTY
MENUITEM "&Reload previous disc", IDM_RDISK_06_RELOAD
MENUITEM SEPARATOR
MENUITEM "&Image...", IDM_RDISK_06_IMAGE
END
POPUP "Removable disk 07"
BEGIN
MENUITEM "E&mpty", IDM_RDISK_07_EMPTY
MENUITEM "&Reload previous disc", IDM_RDISK_07_RELOAD
MENUITEM SEPARATOR
MENUITEM "&Image...", IDM_RDISK_07_IMAGE
END
POPUP "Removable disk 08"
BEGIN
MENUITEM "E&mpty", IDM_RDISK_08_EMPTY
MENUITEM "&Reload previous disc", IDM_RDISK_08_RELOAD
MENUITEM SEPARATOR
MENUITEM "&Image...", IDM_RDISK_08_IMAGE
END
POPUP "Removable disk 09"
BEGIN
MENUITEM "E&mpty", IDM_RDISK_09_EMPTY
MENUITEM "&Reload previous disc", IDM_RDISK_09_RELOAD
MENUITEM SEPARATOR
MENUITEM "&Image...", IDM_RDISK_09_IMAGE
END
POPUP "Removable disk 10"
BEGIN
MENUITEM "E&mpty", IDM_RDISK_10_EMPTY
MENUITEM "&Reload previous disc", IDM_RDISK_10_RELOAD
MENUITEM SEPARATOR
MENUITEM "&Image...", IDM_RDISK_10_IMAGE
END
POPUP "Removable disk 11"
BEGIN
MENUITEM "E&mpty", IDM_RDISK_11_EMPTY
MENUITEM "&Reload previous disc", IDM_RDISK_11_RELOAD
MENUITEM SEPARATOR
MENUITEM "&Image...", IDM_RDISK_11_IMAGE
END
POPUP "Removable disk 12"
BEGIN
MENUITEM "E&mpty", IDM_RDISK_12_EMPTY
MENUITEM "&Reload previous disc", IDM_RDISK_12_RELOAD
MENUITEM SEPARATOR
MENUITEM "&Image...", IDM_RDISK_12_IMAGE
END
POPUP "Removable disk 13"
BEGIN
MENUITEM "E&mpty", IDM_RDISK_13_EMPTY
MENUITEM "&Reload previous disc", IDM_RDISK_13_RELOAD
MENUITEM SEPARATOR
MENUITEM "&Image...", IDM_RDISK_13_IMAGE
END
POPUP "Removable disk 14"
BEGIN
MENUITEM "E&mpty", IDM_RDISK_14_EMPTY
MENUITEM "&Reload previous disc", IDM_RDISK_14_RELOAD
MENUITEM SEPARATOR
MENUITEM "&Image...", IDM_RDISK_14_IMAGE
END
POPUP "Removable disk 15"
BEGIN
MENUITEM "E&mpty", IDM_RDISK_15_EMPTY
MENUITEM "&Reload previous disc", IDM_RDISK_15_RELOAD
MENUITEM SEPARATOR
MENUITEM "&Image...", IDM_RDISK_15_IMAGE
END
POPUP "Removable disk 16"
BEGIN
MENUITEM "E&mpty", IDM_RDISK_16_EMPTY
MENUITEM "&Reload previous disc", IDM_RDISK_16_RELOAD
MENUITEM SEPARATOR
MENUITEM "&Image...", IDM_RDISK_16_IMAGE
END
END END
MAINMENU MENU DISCARDABLE MAINMENU MENU DISCARDABLE
@@ -536,14 +648,14 @@ END
163 ICON DISCARDABLE "ICONS/cdrom_atapi_dma_active.ico" 163 ICON DISCARDABLE "ICONS/cdrom_atapi_dma_active.ico"
164 ICON DISCARDABLE "ICONS/cdrom_scsi.ico" 164 ICON DISCARDABLE "ICONS/cdrom_scsi.ico"
165 ICON DISCARDABLE "ICONS/cdrom_scsi_active.ico" 165 ICON DISCARDABLE "ICONS/cdrom_scsi_active.ico"
176 ICON DISCARDABLE "ICONS/hard_disk_mfm.ico" 192 ICON DISCARDABLE "ICONS/hard_disk_mfm.ico"
177 ICON DISCARDABLE "ICONS/hard_disk_mfm_active.ico" 193 ICON DISCARDABLE "ICONS/hard_disk_mfm_active.ico"
178 ICON DISCARDABLE "ICONS/hard_disk.ico" 194 ICON DISCARDABLE "ICONS/hard_disk.ico"
179 ICON DISCARDABLE "ICONS/hard_disk_active.ico" 195 ICON DISCARDABLE "ICONS/hard_disk_active.ico"
180 ICON DISCARDABLE "ICONS/hard_disk_ide.ico" 196 ICON DISCARDABLE "ICONS/hard_disk_ide.ico"
181 ICON DISCARDABLE "ICONS/hard_disk_ide_active.ico" 197 ICON DISCARDABLE "ICONS/hard_disk_ide_active.ico"
182 ICON DISCARDABLE "ICONS/hard_disk_scsi.ico" 198 ICON DISCARDABLE "ICONS/hard_disk_scsi.ico"
183 ICON DISCARDABLE "ICONS/hard_disk_scsi_active.ico" 199 ICON DISCARDABLE "ICONS/hard_disk_scsi_active.ico"
256 ICON DISCARDABLE "ICONS/machine.ico" 256 ICON DISCARDABLE "ICONS/machine.ico"
257 ICON DISCARDABLE "ICONS/video.ico" 257 ICON DISCARDABLE "ICONS/video.ico"
258 ICON DISCARDABLE "ICONS/input_devices.ico" 258 ICON DISCARDABLE "ICONS/input_devices.ico"

View File

@@ -180,6 +180,55 @@
#define IDM_CDROM_4_EMPTY 40179 #define IDM_CDROM_4_EMPTY 40179
#define IDM_CDROM_4_REAL 40195 #define IDM_CDROM_4_REAL 40195
#define IDM_RDISK_01_IMAGE 3200
#define IDM_RDISK_01_RELOAD 3216
#define IDM_RDISK_01_EMPTY 3232
#define IDM_RDISK_02_IMAGE 3201
#define IDM_RDISK_02_RELOAD 3217
#define IDM_RDISK_02_EMPTY 3233
#define IDM_RDISK_03_IMAGE 3202
#define IDM_RDISK_03_RELOAD 3218
#define IDM_RDISK_03_EMPTY 3234
#define IDM_RDISK_04_IMAGE 3203
#define IDM_RDISK_04_RELOAD 3219
#define IDM_RDISK_04_EMPTY 3235
#define IDM_RDISK_05_IMAGE 3204
#define IDM_RDISK_05_RELOAD 3220
#define IDM_RDISK_05_EMPTY 3236
#define IDM_RDISK_06_IMAGE 3205
#define IDM_RDISK_06_RELOAD 3221
#define IDM_RDISK_06_EMPTY 3237
#define IDM_RDISK_07_IMAGE 3206
#define IDM_RDISK_07_RELOAD 3222
#define IDM_RDISK_07_EMPTY 3238
#define IDM_RDISK_08_IMAGE 3207
#define IDM_RDISK_08_RELOAD 3223
#define IDM_RDISK_08_EMPTY 3239
#define IDM_RDISK_09_IMAGE 3208
#define IDM_RDISK_09_RELOAD 3224
#define IDM_RDISK_09_EMPTY 3240
#define IDM_RDISK_10_IMAGE 3209
#define IDM_RDISK_10_RELOAD 3225
#define IDM_RDISK_10_EMPTY 3241
#define IDM_RDISK_11_IMAGE 3210
#define IDM_RDISK_11_RELOAD 3226
#define IDM_RDISK_11_EMPTY 3242
#define IDM_RDISK_12_IMAGE 3211
#define IDM_RDISK_12_RELOAD 3227
#define IDM_RDISK_12_EMPTY 3243
#define IDM_RDISK_13_IMAGE 3212
#define IDM_RDISK_13_RELOAD 3228
#define IDM_RDISK_13_EMPTY 3244
#define IDM_RDISK_14_IMAGE 3213
#define IDM_RDISK_14_RELOAD 3229
#define IDM_RDISK_14_EMPTY 3245
#define IDM_RDISK_15_IMAGE 3214
#define IDM_RDISK_15_RELOAD 3230
#define IDM_RDISK_15_EMPTY 3246
#define IDM_RDISK_16_IMAGE 3215
#define IDM_RDISK_16_RELOAD 3231
#define IDM_RDISK_16_EMPTY 3247
#define IDM_IDE_TER_ENABLED 44000 #define IDM_IDE_TER_ENABLED 44000
#define IDM_IDE_TER_IRQ9 44009 #define IDM_IDE_TER_IRQ9 44009
#define IDM_IDE_TER_IRQ10 44010 #define IDM_IDE_TER_IRQ10 44010

View File

@@ -696,7 +696,7 @@ void update_status_bar_icon(int tag, int active)
int found = -1; int found = -1;
int temp_flags = 0; int temp_flags = 0;
if ((tag & 0xf0) >= 0x30) if ((tag & 0xf0) >= 0x40)
{ {
return; return;
} }
@@ -833,7 +833,7 @@ void update_tip(int meaning)
if (part != -1) if (part != -1)
{ {
switch(meaning & 0x30) switch(meaning & 0xf0)
{ {
case 0x00: case 0x00:
create_floppy_tip(part); create_floppy_tip(part);
@@ -841,7 +841,12 @@ void update_tip(int meaning)
case 0x10: case 0x10:
create_cdrom_tip(part); create_cdrom_tip(part);
break; break;
#if 0
case 0x20: case 0x20:
create_removable_hd_tip(part);
break;
#endif
case 0x30:
create_hd_tip(part); create_hd_tip(part);
break; break;
default: default:
@@ -883,7 +888,7 @@ void status_settextw(wchar_t *wstr)
for (i = 0; i < sb_parts; i++) for (i = 0; i < sb_parts; i++)
{ {
if (sb_part_meanings[i] == 0x30) if (sb_part_meanings[i] == 0x40)
{ {
part = i; part = i;
} }
@@ -949,32 +954,44 @@ void update_status_bar_panes(HWND hwnds)
sb_parts++; sb_parts++;
} }
} }
#if 0
for (i = 0; i < 16; i++)
{
if (hdc[i].bus == 5)
{
edge += sb_icon_width;
iStatusWidths[sb_parts] = edge;
sb_part_meanings[sb_parts] = 0x20 | i;
sb_parts++;
}
}
#endif
if (c_mfm && !(models[model].flags & MODEL_HAS_IDE) && !!memcmp(hdd_controller_name, "none", 4) && !!memcmp(hdd_controller_name, "xtide", 5)) if (c_mfm && !(models[model].flags & MODEL_HAS_IDE) && !!memcmp(hdd_controller_name, "none", 4) && !!memcmp(hdd_controller_name, "xtide", 5))
{ {
edge += sb_icon_width; edge += sb_icon_width;
iStatusWidths[sb_parts] = edge; iStatusWidths[sb_parts] = edge;
sb_part_meanings[sb_parts] = 0x20; sb_part_meanings[sb_parts] = 0x30;
sb_parts++; sb_parts++;
} }
if (c_ide_pio && ((models[model].flags & MODEL_HAS_IDE) || !memcmp(hdd_controller_name, "xtide", 5))) if (c_ide_pio && ((models[model].flags & MODEL_HAS_IDE) || !memcmp(hdd_controller_name, "xtide", 5)))
{ {
edge += sb_icon_width; edge += sb_icon_width;
iStatusWidths[sb_parts] = edge; iStatusWidths[sb_parts] = edge;
sb_part_meanings[sb_parts] = 0x21; sb_part_meanings[sb_parts] = 0x31;
sb_parts++; sb_parts++;
} }
if (c_ide_dma && ((models[model].flags & MODEL_HAS_IDE) || !memcmp(hdd_controller_name, "xtide", 5))) if (c_ide_dma && ((models[model].flags & MODEL_HAS_IDE) || !memcmp(hdd_controller_name, "xtide", 5)))
{ {
edge += sb_icon_width; edge += sb_icon_width;
iStatusWidths[sb_parts] = edge; iStatusWidths[sb_parts] = edge;
sb_part_meanings[sb_parts] = 0x22; sb_part_meanings[sb_parts] = 0x32;
sb_parts++; sb_parts++;
} }
if (c_scsi) if (c_scsi)
{ {
edge += sb_icon_width; edge += sb_icon_width;
iStatusWidths[sb_parts] = edge; iStatusWidths[sb_parts] = edge;
sb_part_meanings[sb_parts] = 0x23; sb_part_meanings[sb_parts] = 0x33;
sb_parts++; sb_parts++;
} }
if (sb_parts) if (sb_parts)
@@ -982,14 +999,14 @@ void update_status_bar_panes(HWND hwnds)
iStatusWidths[sb_parts - 1] += (24 - sb_icon_width); iStatusWidths[sb_parts - 1] += (24 - sb_icon_width);
} }
iStatusWidths[sb_parts] = -1; iStatusWidths[sb_parts] = -1;
sb_part_meanings[sb_parts] = 0x30; sb_part_meanings[sb_parts] = 0x40;
sb_parts++; sb_parts++;
SendMessage(hwnds, SB_SETPARTS, (WPARAM) sb_parts, (LPARAM) iStatusWidths); SendMessage(hwnds, SB_SETPARTS, (WPARAM) sb_parts, (LPARAM) iStatusWidths);
for (i = 0; i < sb_parts; i++) for (i = 0; i < sb_parts; i++)
{ {
switch (sb_part_meanings[i] & 0x30) switch (sb_part_meanings[i] & 0xf0)
{ {
case 0x00: case 0x00:
/* Floppy */ /* Floppy */
@@ -1030,12 +1047,20 @@ void update_status_bar_panes(HWND hwnds)
sb_part_icons[i] = j | sb_icon_flags[i]; sb_part_icons[i] = j | sb_icon_flags[i];
create_cdrom_tip(i); create_cdrom_tip(i);
break; break;
#if 0
case 0x20: case 0x20:
/* Removable hard disk */
sb_icon_flags[i] = (wcslen(discfns[sb_part_meanings[i] & 0xf]) == 0) ? 256 : 0;
sb_part_icons[i] = 176 + sb_icon_flags[i];
create_floppy_tip(i);
break;
#endif
case 0x30:
/* Hard disk */ /* Hard disk */
sb_part_icons[i] = 176 + ((sb_part_meanings[i] & 0xf) << 1); sb_part_icons[i] = 192 + ((sb_part_meanings[i] & 0xf) << 1);
create_hd_tip(i); create_hd_tip(i);
break; break;
case 0x30: case 0x40:
/* Status text */ /* Status text */
SendMessage(hwnds, SB_SETTEXT, i | SBT_NOBORDERS, (LPARAM) L"Welcome to Unicode 86Box! :p"); SendMessage(hwnds, SB_SETTEXT, i | SBT_NOBORDERS, (LPARAM) L"Welcome to Unicode 86Box! :p");
sb_part_icons[i] = -1; sb_part_icons[i] = -1;
@@ -1082,7 +1107,14 @@ HWND EmulatorStatusBar(HWND hwndParent, int idStatus, HINSTANCE hinst)
hIcon[i] = LoadIconEx((PCTSTR) i); hIcon[i] = LoadIconEx((PCTSTR) i);
} }
for (i = 176; i < 184; i++) #if 0
for (i = 176; i < 178; i++)
{
hIcon[i] = LoadIconEx((PCTSTR) i);
}
#endif
for (i = 192; i < 200; i++)
{ {
hIcon[i] = LoadIconEx((PCTSTR) i); hIcon[i] = LoadIconEx((PCTSTR) i);
} }
@@ -1107,6 +1139,13 @@ HWND EmulatorStatusBar(HWND hwndParent, int idStatus, HINSTANCE hinst)
hIcon[i] = LoadIconEx((PCTSTR) i); hIcon[i] = LoadIconEx((PCTSTR) i);
} }
#if 0
for (i = 432; i < 434; i++)
{
hIcon[i] = LoadIconEx((PCTSTR) i);
}
#endif
GetWindowRect(hwndParent, &rectDialog); GetWindowRect(hwndParent, &rectDialog);
dw = rectDialog.right - rectDialog.left; dw = rectDialog.right - rectDialog.left;
dh = rectDialog.bottom - rectDialog.top; dh = rectDialog.bottom - rectDialog.top;
@@ -2192,14 +2231,20 @@ VOID APIENTRY HandlePopupMenu(HWND hwnd, POINT pt, int id)
pt.x = id * sb_icon_width; /* Justify to the left. */ pt.x = id * sb_icon_width; /* Justify to the left. */
pt.y = 0; /* Justify to the top. */ pt.y = 0; /* Justify to the top. */
ClientToScreen(hwnd, (LPPOINT) &pt); ClientToScreen(hwnd, (LPPOINT) &pt);
if ((sb_part_meanings[id] & 0x30) == 0x00) if ((sb_part_meanings[id] & 0xf0) == 0x00)
{ {
menu_id = sb_part_meanings[id] & 0xf; menu_id = sb_part_meanings[id] & 0xf;
} }
else if ((sb_part_meanings[id] & 0x30) == 0x10) else if ((sb_part_meanings[id] & 0xf0) == 0x10)
{ {
menu_id = (sb_part_meanings[id] & 0xf) + 4; menu_id = (sb_part_meanings[id] & 0xf) + 4;
} }
#if 0
else if ((sb_part_meanings[id] & 0xf0) == 0x20)
{
menu_id = (sb_part_meanings[id] & 0xf) + 8;
}
#endif
if (menu_id != -1) if (menu_id != -1)
{ {
pmenu = GetSubMenu(smenu, menu_id); pmenu = GetSubMenu(smenu, menu_id);

View File

@@ -997,15 +997,7 @@ static void loadconfig_hard_disks(void)
sprintf(temps, "hdd_%02i_scsi_location", c + 1); sprintf(temps, "hdd_%02i_scsi_location", c + 1);
sprintf(temps2, "%02u:%02u", c, 0); sprintf(temps2, "%02u:%02u", c, 0);
p = config_get_string(cat, temps, temps2); p = config_get_string(cat, temps, temps2);
if (p != NULL)
{
sscanf(p, "%02u:%02u", &hdc[c].scsi_id, &hdc[c].scsi_lun); sscanf(p, "%02u:%02u", &hdc[c].scsi_id, &hdc[c].scsi_lun);
}
else
{
/* FIXME: Can never happen, 'temps' above is non-NULL. */
sscanf(temps2, "%02u:%02u", &hdc[c].scsi_id, &hdc[c].scsi_lun);
}
if (hdc[c].scsi_id > 15) if (hdc[c].scsi_id > 15)
{ {
@@ -1019,12 +1011,7 @@ static void loadconfig_hard_disks(void)
memset(hdd_fn[c], 0, 1024); memset(hdd_fn[c], 0, 1024);
sprintf(temps, "hdd_%02i_fn", c + 1); sprintf(temps, "hdd_%02i_fn", c + 1);
wp = config_get_wstring(cat, temps, L""); wp = config_get_wstring(cat, temps, L"");
/*FIXME: wcslen(wp) instead of 512? */ memcpy(hdd_fn[c], wp, (wcslen(wp) << 1) + 2);
if (wp) memcpy(hdd_fn[c], wp, 512);
else {
memcpy(hdd_fn[c], L"", 2);
hdd_fn[c][0] = L'\0';
}
} }
} }
@@ -1044,10 +1031,7 @@ static void loadconfig_removable_devices(void)
{ {
sprintf(temps, "fdd_%02i_type", c + 1); sprintf(temps, "fdd_%02i_type", c + 1);
p = config_get_string(cat, temps, (c < 2) ? "525_2dd" : "none"); p = config_get_string(cat, temps, (c < 2) ? "525_2dd" : "none");
if (p)
fdd_set_type(c, fdd_get_from_internal_name(p)); fdd_set_type(c, fdd_get_from_internal_name(p));
else /*FIXME: never happens, "none" is non-NULL */
fdd_set_type(c, (c < 2) ? 2 : 0);
if (fdd_get_type(c) > 13) if (fdd_get_type(c) > 13)
{ {
fdd_set_type(c, 13); fdd_set_type(c, 13);
@@ -1055,12 +1039,7 @@ static void loadconfig_removable_devices(void)
sprintf(temps, "fdd_%02i_fn", c + 1); sprintf(temps, "fdd_%02i_fn", c + 1);
wp = config_get_wstring(cat, temps, L""); wp = config_get_wstring(cat, temps, L"");
/*FIXME: see above, wcslen(wp) ? */ memcpy(discfns[c], wp, (wcslen(wp) << 1) + 2);
if (wp) memcpy(discfns[c], wp, 512);
else {
memcpy(discfns[c], L"", 2);
discfns[c][0] = L'\0';
}
printf("Floppy: %ws\n", discfns[c]); printf("Floppy: %ws\n", discfns[c]);
sprintf(temps, "fdd_%02i_writeprot", c + 1); sprintf(temps, "fdd_%02i_writeprot", c + 1);
ui_writeprot[c] = !!config_get_int(cat, temps, 0); ui_writeprot[c] = !!config_get_int(cat, temps, 0);
@@ -1096,15 +1075,7 @@ static void loadconfig_removable_devices(void)
sprintf(temps, "cdrom_%02i_scsi_location", c + 1); sprintf(temps, "cdrom_%02i_scsi_location", c + 1);
sprintf(temps2, "%02u:%02u", c + 2, 0); sprintf(temps2, "%02u:%02u", c + 2, 0);
p = config_get_string(cat, temps, temps2); p = config_get_string(cat, temps, temps2);
if (p != NULL)
{
sscanf(p, "%02u:%02u", &cdrom_drives[c].scsi_device_id, &cdrom_drives[c].scsi_device_lun); sscanf(p, "%02u:%02u", &cdrom_drives[c].scsi_device_id, &cdrom_drives[c].scsi_device_lun);
}
else /*FIXME: never happens, 'temps2' is non-NULL */
{
sscanf(temps2, "%02u:%02u", &cdrom_drives[c].scsi_device_id, &cdrom_drives[c].scsi_device_lun);
}
if (cdrom_drives[c].scsi_device_id > 15) if (cdrom_drives[c].scsi_device_id > 15)
{ {
@@ -1117,12 +1088,7 @@ static void loadconfig_removable_devices(void)
sprintf(temps, "cdrom_%02i_image_path", c + 1); sprintf(temps, "cdrom_%02i_image_path", c + 1);
wp = config_get_wstring(cat, temps, L""); wp = config_get_wstring(cat, temps, L"");
/*FIXME see above, wcslen(wp) */ memcpy(cdrom_image[c].image_path, wp, (wcslen(wp) << 1) + 2);
if (wp != NULL) memcpy(cdrom_image[c].image_path, wp, 512);
else {
memcpy(cdrom_image[c].image_path, L"", 2);
cdrom_image[c].image_path[0] = L'\0';
}
} }
} }

View File

@@ -433,7 +433,7 @@ static void esdi_callback(void *p)
fatal("Read past end of drive\n"); fatal("Read past end of drive\n");
fseek(drive->hdfile, esdi->rba * 512, SEEK_SET); fseek(drive->hdfile, esdi->rba * 512, SEEK_SET);
fread(esdi->data, 512, 1, drive->hdfile); fread(esdi->data, 512, 1, drive->hdfile);
update_status_bar_icon(0x20, 1); update_status_bar_icon(0x30, 1);
} }
while (esdi->data_pos < 256) while (esdi->data_pos < 256)
{ {
@@ -522,11 +522,11 @@ static void esdi_callback(void *p)
fwrite(esdi->data, 512, 1, drive->hdfile); fwrite(esdi->data, 512, 1, drive->hdfile);
esdi->rba++; esdi->rba++;
esdi->sector_pos++; esdi->sector_pos++;
update_status_bar_icon(0x20, 1); update_status_bar_icon(0x30, 1);
esdi->data_pos = 0; esdi->data_pos = 0;
} }
update_status_bar_icon(0x20, 0); update_status_bar_icon(0x30, 0);
esdi->status = STATUS_CMD_IN_PROGRESS; esdi->status = STATUS_CMD_IN_PROGRESS;
esdi->cmd_state = 2; esdi->cmd_state = 2;

View File

@@ -1399,7 +1399,7 @@ uint32_t ide_read_data(int ide_board, int length)
} }
else else
{ {
update_status_bar_icon((hdc[ide->hdc_num].bus == 3) ? 0x22 : 0x21, 0); update_status_bar_icon((hdc[ide->hdc_num].bus == 3) ? 0x32 : 0x31, 0);
} }
} }
} }
@@ -1722,7 +1722,7 @@ void callbackide(int ide_board)
ide_irq_raise(ide); ide_irq_raise(ide);
update_status_bar_icon((hdc[ide->hdc_num].bus == 3) ? 0x22 : 0x21, 1); update_status_bar_icon((hdc[ide->hdc_num].bus == 3) ? 0x32 : 0x31, 1);
return; return;
case WIN_READ_DMA: case WIN_READ_DMA:
@@ -1756,12 +1756,12 @@ void callbackide(int ide_board)
ide_next_sector(ide); ide_next_sector(ide);
ide->atastat = BUSY_STAT; ide->atastat = BUSY_STAT;
idecallback[ide_board]=6*IDE_TIME; idecallback[ide_board]=6*IDE_TIME;
update_status_bar_icon((hdc[ide->hdc_num].bus == 3) ? 0x22 : 0x21, 1); update_status_bar_icon((hdc[ide->hdc_num].bus == 3) ? 0x32 : 0x31, 1);
} }
else else
{ {
ide_irq_raise(ide); ide_irq_raise(ide);
update_status_bar_icon((hdc[ide->hdc_num].bus == 3) ? 0x22 : 0x21, 0); update_status_bar_icon((hdc[ide->hdc_num].bus == 3) ? 0x32 : 0x31, 0);
} }
} }
} }
@@ -1799,7 +1799,7 @@ void callbackide(int ide_board)
ide->blockcount = 0; ide->blockcount = 0;
} }
update_status_bar_icon((hdc[ide->hdc_num].bus == 3) ? 0x22 : 0x21, 1); update_status_bar_icon((hdc[ide->hdc_num].bus == 3) ? 0x32 : 0x31, 1);
return; return;
case WIN_WRITE: case WIN_WRITE:
@@ -1822,12 +1822,12 @@ void callbackide(int ide_board)
ide->atastat = DRQ_STAT | READY_STAT | DSC_STAT; ide->atastat = DRQ_STAT | READY_STAT | DSC_STAT;
ide->pos=0; ide->pos=0;
ide_next_sector(ide); ide_next_sector(ide);
update_status_bar_icon((hdc[ide->hdc_num].bus == 3) ? 0x22 : 0x21, 1); update_status_bar_icon((hdc[ide->hdc_num].bus == 3) ? 0x32 : 0x31, 1);
} }
else else
{ {
ide->atastat = READY_STAT | DSC_STAT; ide->atastat = READY_STAT | DSC_STAT;
update_status_bar_icon((hdc[ide->hdc_num].bus == 3) ? 0x22 : 0x21, 0); update_status_bar_icon((hdc[ide->hdc_num].bus == 3) ? 0x32 : 0x31, 0);
} }
return; return;
@@ -1863,12 +1863,12 @@ void callbackide(int ide_board)
ide_next_sector(ide); ide_next_sector(ide);
ide->atastat = BUSY_STAT; ide->atastat = BUSY_STAT;
idecallback[ide_board]=6*IDE_TIME; idecallback[ide_board]=6*IDE_TIME;
update_status_bar_icon((hdc[ide->hdc_num].bus == 3) ? 0x22 : 0x21, 1); update_status_bar_icon((hdc[ide->hdc_num].bus == 3) ? 0x32 : 0x31, 1);
} }
else else
{ {
ide_irq_raise(ide); ide_irq_raise(ide);
update_status_bar_icon((hdc[ide->hdc_num].bus == 3) ? 0x22 : 0x21, 0); update_status_bar_icon((hdc[ide->hdc_num].bus == 3) ? 0x32 : 0x31, 0);
} }
} }
} }
@@ -1899,12 +1899,12 @@ void callbackide(int ide_board)
ide->atastat = DRQ_STAT | READY_STAT | DSC_STAT; ide->atastat = DRQ_STAT | READY_STAT | DSC_STAT;
ide->pos=0; ide->pos=0;
ide_next_sector(ide); ide_next_sector(ide);
update_status_bar_icon((hdc[ide->hdc_num].bus == 3) ? 0x22 : 0x21, 1); update_status_bar_icon((hdc[ide->hdc_num].bus == 3) ? 0x32 : 0x31, 1);
} }
else else
{ {
ide->atastat = READY_STAT | DSC_STAT; ide->atastat = READY_STAT | DSC_STAT;
update_status_bar_icon((hdc[ide->hdc_num].bus == 3) ? 0x22 : 0x21, 0); update_status_bar_icon((hdc[ide->hdc_num].bus == 3) ? 0x32 : 0x31, 0);
} }
return; return;
@@ -1921,7 +1921,7 @@ void callbackide(int ide_board)
ide->pos=0; ide->pos=0;
ide->atastat = READY_STAT | DSC_STAT; ide->atastat = READY_STAT | DSC_STAT;
ide_irq_raise(ide); ide_irq_raise(ide);
update_status_bar_icon((hdc[ide->hdc_num].bus == 3) ? 0x22 : 0x21, 1); update_status_bar_icon((hdc[ide->hdc_num].bus == 3) ? 0x32 : 0x31, 1);
return; return;
case WIN_FORMAT: case WIN_FORMAT:
@@ -1943,7 +1943,7 @@ void callbackide(int ide_board)
ide->atastat = READY_STAT | DSC_STAT; ide->atastat = READY_STAT | DSC_STAT;
ide_irq_raise(ide); ide_irq_raise(ide);
/* update_status_bar_icon((hdc[ide->hdc_num].bus == 3) ? 0x22 : 0x21, 1); */ /* update_status_bar_icon((hdc[ide->hdc_num].bus == 3) ? 0x32 : 0x31, 1); */
return; return;
case WIN_DRIVE_DIAGNOSTICS: case WIN_DRIVE_DIAGNOSTICS:

View File

@@ -439,7 +439,7 @@ uint16_t mfm_readw(uint16_t port, void *p)
} }
else else
{ {
update_status_bar_icon(0x20, 0); update_status_bar_icon(0x30, 0);
} }
} }
} }
@@ -505,7 +505,7 @@ void mfm_callback(void *p)
mfm->pos = 0; mfm->pos = 0;
mfm->status = STAT_DRQ | STAT_READY | STAT_DSC; mfm->status = STAT_DRQ | STAT_READY | STAT_DSC;
mfm_irq_raise(mfm); mfm_irq_raise(mfm);
update_status_bar_icon(0x20, 1); update_status_bar_icon(0x30, 1);
break; break;
case CMD_WRITE: case CMD_WRITE:
@@ -526,12 +526,12 @@ void mfm_callback(void *p)
mfm->status = STAT_DRQ | STAT_READY | STAT_DSC; mfm->status = STAT_DRQ | STAT_READY | STAT_DSC;
mfm->pos = 0; mfm->pos = 0;
mfm_next_sector(mfm); mfm_next_sector(mfm);
update_status_bar_icon(0x20, 1); update_status_bar_icon(0x30, 1);
} }
else else
{ {
mfm->status = STAT_READY | STAT_DSC; mfm->status = STAT_READY | STAT_DSC;
update_status_bar_icon(0x20, 0); update_status_bar_icon(0x30, 0);
} }
break; break;
@@ -540,7 +540,7 @@ void mfm_callback(void *p)
mfm->pos = 0; mfm->pos = 0;
mfm->status = STAT_READY | STAT_DSC; mfm->status = STAT_READY | STAT_DSC;
mfm_irq_raise(mfm); mfm_irq_raise(mfm);
update_status_bar_icon(0x20, 1); update_status_bar_icon(0x30, 1);
break; break;
case CMD_FORMAT: case CMD_FORMAT:
@@ -560,7 +560,7 @@ void mfm_callback(void *p)
} }
mfm->status = STAT_READY | STAT_DSC; mfm->status = STAT_READY | STAT_DSC;
mfm_irq_raise(mfm); mfm_irq_raise(mfm);
update_status_bar_icon(0x20, 1); update_status_bar_icon(0x30, 1);
break; break;
case CMD_DIAGNOSE: case CMD_DIAGNOSE:

View File

@@ -374,7 +374,7 @@ static void xebec_callback(void *p)
xebec_complete(xebec); xebec_complete(xebec);
update_status_bar_icon(0x20, 1); update_status_bar_icon(0x30, 1);
break; break;
default: default:
@@ -431,7 +431,7 @@ static void xebec_callback(void *p)
fseeko64(drive->hdfile, addr * 512, SEEK_SET); fseeko64(drive->hdfile, addr * 512, SEEK_SET);
fread(xebec->sector_buf, 512, 1, drive->hdfile); fread(xebec->sector_buf, 512, 1, drive->hdfile);
update_status_bar_icon(0x20, 1); update_status_bar_icon(0x30, 1);
} }
if (xebec->irq_dma_mask & DMA_ENA) if (xebec->irq_dma_mask & DMA_ENA)
xebec->callback = XEBEC_TIME; xebec->callback = XEBEC_TIME;
@@ -485,7 +485,7 @@ static void xebec_callback(void *p)
fseeko64(drive->hdfile, addr * 512, SEEK_SET); fseeko64(drive->hdfile, addr * 512, SEEK_SET);
fread(xebec->sector_buf, 512, 1, drive->hdfile); fread(xebec->sector_buf, 512, 1, drive->hdfile);
update_status_bar_icon(0x20, 1); update_status_bar_icon(0x30, 1);
xebec->state = STATE_SEND_DATA; xebec->state = STATE_SEND_DATA;
@@ -500,7 +500,7 @@ static void xebec_callback(void *p)
else else
{ {
xebec_complete(xebec); xebec_complete(xebec);
update_status_bar_icon(0x20, 0); update_status_bar_icon(0x30, 0);
} }
break; break;
@@ -572,7 +572,7 @@ static void xebec_callback(void *p)
fwrite(xebec->sector_buf, 512, 1, drive->hdfile); fwrite(xebec->sector_buf, 512, 1, drive->hdfile);
} }
update_status_bar_icon(0x20, 1); update_status_bar_icon(0x30, 1);
xebec_next_sector(xebec); xebec_next_sector(xebec);
xebec->data_pos = 0; xebec->data_pos = 0;

View File

@@ -852,11 +852,11 @@ void scsi_hd_command(uint8_t id, uint8_t *cdb)
shdc[id].all_blocks_total = shdc[id].block_total; shdc[id].all_blocks_total = shdc[id].block_total;
if (shdc[id].packet_status != CDROM_PHASE_COMPLETE) if (shdc[id].packet_status != CDROM_PHASE_COMPLETE)
{ {
update_status_bar_icon(0x23, 1); update_status_bar_icon((hdc[id].bus == 5) ? (0x20 | id) : 0x23, 1);
} }
else else
{ {
update_status_bar_icon(0x23, 0); update_status_bar_icon((hdc[id].bus == 5) ? (0x20 | id) : 0x23, 0);
} }
return; return;
@@ -913,11 +913,11 @@ void scsi_hd_command(uint8_t id, uint8_t *cdb)
shdc[id].all_blocks_total = shdc[id].block_total; shdc[id].all_blocks_total = shdc[id].block_total;
if (shdc[id].packet_status != CDROM_PHASE_COMPLETE) if (shdc[id].packet_status != CDROM_PHASE_COMPLETE)
{ {
update_status_bar_icon(0x23, 1); update_status_bar_icon((hdc[id].bus == 5) ? (0x20 | id) : 0x23, 1);
} }
else else
{ {
update_status_bar_icon(0x23, 0); update_status_bar_icon((hdc[id].bus == 5) ? (0x20 | id) : 0x23, 0);
} }
return; return;
@@ -1129,7 +1129,7 @@ void scsi_hd_callback(uint8_t id)
shdc[id].status = READY_STAT; shdc[id].status = READY_STAT;
shdc[id].phase = 3; shdc[id].phase = 3;
shdc[id].packet_status = 0xFF; shdc[id].packet_status = 0xFF;
update_status_bar_icon(0x23, 0); update_status_bar_icon((hdc[id].bus == 5) ? (0x20 | id) : 0x23, 0);
return; return;
case CDROM_PHASE_DATA_OUT: case CDROM_PHASE_DATA_OUT:
scsi_hd_log("SCSI HD %i: PHASE_DATA_OUT\n", id); scsi_hd_log("SCSI HD %i: PHASE_DATA_OUT\n", id);
@@ -1142,7 +1142,7 @@ void scsi_hd_callback(uint8_t id)
shdc[id].packet_status = CDROM_PHASE_COMPLETE; shdc[id].packet_status = CDROM_PHASE_COMPLETE;
shdc[id].status = READY_STAT; shdc[id].status = READY_STAT;
shdc[id].phase = 3; shdc[id].phase = 3;
update_status_bar_icon(0x23, 0); update_status_bar_icon((hdc[id].bus == 5) ? (0x20 | id) : 0x23, 0);
return; return;
case CDROM_PHASE_DATA_IN: case CDROM_PHASE_DATA_IN:
scsi_hd_log("SCSI HD %i: PHASE_DATA_IN\n", id); scsi_hd_log("SCSI HD %i: PHASE_DATA_IN\n", id);
@@ -1155,7 +1155,7 @@ void scsi_hd_callback(uint8_t id)
shdc[id].packet_status = CDROM_PHASE_COMPLETE; shdc[id].packet_status = CDROM_PHASE_COMPLETE;
shdc[id].status = READY_STAT; shdc[id].status = READY_STAT;
shdc[id].phase = 3; shdc[id].phase = 3;
update_status_bar_icon(0x23, 0); update_status_bar_icon((hdc[id].bus == 5) ? (0x20 | id) : 0x23, 0);
return; return;
case CDROM_PHASE_ERROR: case CDROM_PHASE_ERROR:
scsi_hd_log("SCSI HD %i: PHASE_ERROR\n", id); scsi_hd_log("SCSI HD %i: PHASE_ERROR\n", id);