Fixed some signedness mess in the Settings dialog, fixes creating hard disk images bigger than 2 GB.
This commit is contained in:
@@ -8,7 +8,7 @@
|
|||||||
*
|
*
|
||||||
* Windows 86Box Settings dialog handler.
|
* Windows 86Box Settings dialog handler.
|
||||||
*
|
*
|
||||||
* Version: @(#)win_settings.c 1.0.60 2018/09/11
|
* Version: @(#)win_settings.c 1.0.61 2018/09/12
|
||||||
*
|
*
|
||||||
* Authors: Miran Grca, <mgrca8@gmail.com>
|
* Authors: Miran Grca, <mgrca8@gmail.com>
|
||||||
* David Hrdlička, <hrdlickadavid@outlook.com>
|
* David Hrdlička, <hrdlickadavid@outlook.com>
|
||||||
@@ -2887,15 +2887,15 @@ hdd_add_file_open_error:
|
|||||||
get_edit_box_contents(hdlg, IDC_EDIT_HD_CYL, &temp);
|
get_edit_box_contents(hdlg, IDC_EDIT_HD_CYL, &temp);
|
||||||
if (tracks != (int64_t) temp) {
|
if (tracks != (int64_t) temp) {
|
||||||
tracks = temp;
|
tracks = temp;
|
||||||
size = (tracks * hpc * spt) << 9LL;
|
size = ((uint64_t) tracks * (uint64_t) hpc * (uint64_t) spt) << 9LL;
|
||||||
set_edit_box_contents(hdlg, IDC_EDIT_HD_SIZE, (uint32_t) (size >> 20));
|
set_edit_box_contents(hdlg, IDC_EDIT_HD_SIZE, (uint32_t) (size >> 20));
|
||||||
recalc_selection(hdlg);
|
recalc_selection(hdlg);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (tracks > max_tracks) {
|
if (tracks > max_tracks) {
|
||||||
tracks = max_tracks;
|
tracks = max_tracks;
|
||||||
size = (tracks * hpc * spt) << 9LL;
|
size = ((uint64_t) tracks * (uint64_t) hpc * (uint64_t) spt) << 9LL;
|
||||||
set_edit_box_contents(hdlg, IDC_EDIT_HD_CYL, tracks);
|
set_edit_box_contents(hdlg, IDC_EDIT_HD_CYL, (uint32_t) tracks);
|
||||||
set_edit_box_contents(hdlg, IDC_EDIT_HD_SIZE, (uint32_t) (size >> 20));
|
set_edit_box_contents(hdlg, IDC_EDIT_HD_SIZE, (uint32_t) (size >> 20));
|
||||||
recalc_selection(hdlg);
|
recalc_selection(hdlg);
|
||||||
}
|
}
|
||||||
@@ -2911,15 +2911,15 @@ hdd_add_file_open_error:
|
|||||||
get_edit_box_contents(hdlg, IDC_EDIT_HD_HPC, &temp);
|
get_edit_box_contents(hdlg, IDC_EDIT_HD_HPC, &temp);
|
||||||
if (hpc != (int64_t) temp) {
|
if (hpc != (int64_t) temp) {
|
||||||
hpc = temp;
|
hpc = temp;
|
||||||
size = (tracks * hpc * spt) << 9LL;
|
size = ((uint64_t) tracks * (uint64_t) hpc * (uint64_t) spt) << 9LL;
|
||||||
set_edit_box_contents(hdlg, IDC_EDIT_HD_SIZE, (uint32_t) (size >> 20));
|
set_edit_box_contents(hdlg, IDC_EDIT_HD_SIZE, (uint32_t) (size >> 20));
|
||||||
recalc_selection(hdlg);
|
recalc_selection(hdlg);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (hpc > max_hpc) {
|
if (hpc > max_hpc) {
|
||||||
hpc = max_hpc;
|
hpc = max_hpc;
|
||||||
size = (tracks * hpc * spt) << 9LL;
|
size = ((uint64_t) tracks * (uint64_t) hpc * (uint64_t) spt) << 9LL;
|
||||||
set_edit_box_contents(hdlg, IDC_EDIT_HD_HPC, hpc);
|
set_edit_box_contents(hdlg, IDC_EDIT_HD_HPC, (uint32_t) hpc);
|
||||||
set_edit_box_contents(hdlg, IDC_EDIT_HD_SIZE, (uint32_t) (size >> 20));
|
set_edit_box_contents(hdlg, IDC_EDIT_HD_SIZE, (uint32_t) (size >> 20));
|
||||||
recalc_selection(hdlg);
|
recalc_selection(hdlg);
|
||||||
}
|
}
|
||||||
@@ -2935,14 +2935,14 @@ hdd_add_file_open_error:
|
|||||||
get_edit_box_contents(hdlg, IDC_EDIT_HD_SPT, &temp);
|
get_edit_box_contents(hdlg, IDC_EDIT_HD_SPT, &temp);
|
||||||
if (spt != (int64_t) temp) {
|
if (spt != (int64_t) temp) {
|
||||||
spt = temp;
|
spt = temp;
|
||||||
size = (tracks * hpc * spt) << 9LL;
|
size = ((uint64_t) tracks * (uint64_t) hpc * (uint64_t) spt) << 9LL;
|
||||||
set_edit_box_contents(hdlg, IDC_EDIT_HD_SIZE, (uint32_t) (size >> 20));
|
set_edit_box_contents(hdlg, IDC_EDIT_HD_SIZE, (uint32_t) (size >> 20));
|
||||||
recalc_selection(hdlg);
|
recalc_selection(hdlg);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (spt > max_spt) {
|
if (spt > max_spt) {
|
||||||
spt = max_spt;
|
spt = max_spt;
|
||||||
size = (tracks * hpc * spt) << 9LL;
|
size = ((uint64_t) tracks * (uint64_t) hpc * (uint64_t) spt) << 9LL;
|
||||||
set_edit_box_contents(hdlg, IDC_EDIT_HD_SPT, spt);
|
set_edit_box_contents(hdlg, IDC_EDIT_HD_SPT, spt);
|
||||||
set_edit_box_contents(hdlg, IDC_EDIT_HD_SIZE, (uint32_t) (size >> 20));
|
set_edit_box_contents(hdlg, IDC_EDIT_HD_SIZE, (uint32_t) (size >> 20));
|
||||||
recalc_selection(hdlg);
|
recalc_selection(hdlg);
|
||||||
@@ -2961,32 +2961,32 @@ hdd_add_file_open_error:
|
|||||||
size = ((uint64_t) temp) << 20LL;
|
size = ((uint64_t) temp) << 20LL;
|
||||||
/* This is needed to ensure VHD standard compliance. */
|
/* This is needed to ensure VHD standard compliance. */
|
||||||
hdd_image_calc_chs((uint32_t *) &tracks, (uint32_t *) &hpc, (uint32_t *) &spt, temp);
|
hdd_image_calc_chs((uint32_t *) &tracks, (uint32_t *) &hpc, (uint32_t *) &spt, temp);
|
||||||
set_edit_box_contents(hdlg, IDC_EDIT_HD_CYL, tracks);
|
set_edit_box_contents(hdlg, IDC_EDIT_HD_CYL, (uint32_t) tracks);
|
||||||
set_edit_box_contents(hdlg, IDC_EDIT_HD_HPC, hpc);
|
set_edit_box_contents(hdlg, IDC_EDIT_HD_HPC, (uint32_t) hpc);
|
||||||
set_edit_box_contents(hdlg, IDC_EDIT_HD_SPT, spt);
|
set_edit_box_contents(hdlg, IDC_EDIT_HD_SPT, (uint32_t) spt);
|
||||||
recalc_selection(hdlg);
|
recalc_selection(hdlg);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (tracks > max_tracks) {
|
if (tracks > max_tracks) {
|
||||||
tracks = max_tracks;
|
tracks = max_tracks;
|
||||||
size = (tracks * hpc * spt) << 9LL;
|
size = ((uint64_t) tracks * (uint64_t) hpc * (uint64_t) spt) << 9LL;
|
||||||
set_edit_box_contents(hdlg, IDC_EDIT_HD_CYL, tracks);
|
set_edit_box_contents(hdlg, IDC_EDIT_HD_CYL, (uint32_t) tracks);
|
||||||
set_edit_box_contents(hdlg, IDC_EDIT_HD_SIZE, (uint32_t) (size >> 20));
|
set_edit_box_contents(hdlg, IDC_EDIT_HD_SIZE, (uint32_t) (size >> 20));
|
||||||
recalc_selection(hdlg);
|
recalc_selection(hdlg);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (hpc > max_hpc) {
|
if (hpc > max_hpc) {
|
||||||
hpc = max_hpc;
|
hpc = max_hpc;
|
||||||
size = (tracks * hpc * spt) << 9LL;
|
size = ((uint64_t) tracks * (uint64_t) hpc * (uint64_t) spt) << 9LL;
|
||||||
set_edit_box_contents(hdlg, IDC_EDIT_HD_HPC, hpc);
|
set_edit_box_contents(hdlg, IDC_EDIT_HD_HPC, (uint32_t) hpc);
|
||||||
set_edit_box_contents(hdlg, IDC_EDIT_HD_SIZE, (uint32_t) (size >> 20));
|
set_edit_box_contents(hdlg, IDC_EDIT_HD_SIZE, (uint32_t) (size >> 20));
|
||||||
recalc_selection(hdlg);
|
recalc_selection(hdlg);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (spt > max_spt) {
|
if (spt > max_spt) {
|
||||||
spt = max_spt;
|
spt = max_spt;
|
||||||
size = (tracks * hpc * spt) << 9LL;
|
size = ((uint64_t) tracks * (uint64_t) hpc * (uint64_t) spt) << 9LL;
|
||||||
set_edit_box_contents(hdlg, IDC_EDIT_HD_SPT, spt);
|
set_edit_box_contents(hdlg, IDC_EDIT_HD_SPT, (uint32_t) spt);
|
||||||
set_edit_box_contents(hdlg, IDC_EDIT_HD_SIZE, (uint32_t) (size >> 20));
|
set_edit_box_contents(hdlg, IDC_EDIT_HD_SIZE, (uint32_t) (size >> 20));
|
||||||
recalc_selection(hdlg);
|
recalc_selection(hdlg);
|
||||||
}
|
}
|
||||||
@@ -3005,10 +3005,10 @@ hdd_add_file_open_error:
|
|||||||
tracks = hdd_table[selection][0];
|
tracks = hdd_table[selection][0];
|
||||||
hpc = hdd_table[selection][1];
|
hpc = hdd_table[selection][1];
|
||||||
spt = hdd_table[selection][2];
|
spt = hdd_table[selection][2];
|
||||||
size = (tracks * hpc * spt) << 9LL;
|
size = ((uint64_t) tracks * (uint64_t) hpc * (uint64_t) spt) << 9LL;
|
||||||
set_edit_box_contents(hdlg, IDC_EDIT_HD_CYL, tracks);
|
set_edit_box_contents(hdlg, IDC_EDIT_HD_CYL, (uint32_t) tracks);
|
||||||
set_edit_box_contents(hdlg, IDC_EDIT_HD_HPC, hpc);
|
set_edit_box_contents(hdlg, IDC_EDIT_HD_HPC, (uint32_t) hpc);
|
||||||
set_edit_box_contents(hdlg, IDC_EDIT_HD_SPT, spt);
|
set_edit_box_contents(hdlg, IDC_EDIT_HD_SPT, (uint32_t) spt);
|
||||||
set_edit_box_contents(hdlg, IDC_EDIT_HD_SIZE, (uint32_t) (size >> 20));
|
set_edit_box_contents(hdlg, IDC_EDIT_HD_SIZE, (uint32_t) (size >> 20));
|
||||||
} else if ((temp != selection) && (temp == 127))
|
} else if ((temp != selection) && (temp == 127))
|
||||||
selection = temp;
|
selection = temp;
|
||||||
@@ -3016,32 +3016,32 @@ hdd_add_file_open_error:
|
|||||||
selection = temp;
|
selection = temp;
|
||||||
hpc = 16;
|
hpc = 16;
|
||||||
spt = 63;
|
spt = 63;
|
||||||
size = (tracks * hpc * spt) << 9LL;
|
size = ((uint64_t) tracks * (uint64_t) hpc * (uint64_t) spt) << 9LL;
|
||||||
set_edit_box_contents(hdlg, IDC_EDIT_HD_HPC, hpc);
|
set_edit_box_contents(hdlg, IDC_EDIT_HD_HPC, (uint32_t) hpc);
|
||||||
set_edit_box_contents(hdlg, IDC_EDIT_HD_SPT, spt);
|
set_edit_box_contents(hdlg, IDC_EDIT_HD_SPT, (uint32_t) spt);
|
||||||
set_edit_box_contents(hdlg, IDC_EDIT_HD_SIZE, (uint32_t) (size >> 20));
|
set_edit_box_contents(hdlg, IDC_EDIT_HD_SIZE, (uint32_t) (size >> 20));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (spt > max_spt) {
|
if (spt > max_spt) {
|
||||||
spt = max_spt;
|
spt = max_spt;
|
||||||
size = (tracks * hpc * spt) << 9LL;
|
size = ((uint64_t) tracks * (uint64_t) hpc * (uint64_t) spt) << 9LL;
|
||||||
set_edit_box_contents(hdlg, IDC_EDIT_HD_SPT, spt);
|
set_edit_box_contents(hdlg, IDC_EDIT_HD_SPT, (uint32_t) spt);
|
||||||
set_edit_box_contents(hdlg, IDC_EDIT_HD_SIZE, (uint32_t) (size >> 20));
|
set_edit_box_contents(hdlg, IDC_EDIT_HD_SIZE, (uint32_t) (size >> 20));
|
||||||
recalc_selection(hdlg);
|
recalc_selection(hdlg);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (hpc > max_hpc) {
|
if (hpc > max_hpc) {
|
||||||
hpc = max_hpc;
|
hpc = max_hpc;
|
||||||
size = (tracks * hpc * spt) << 9LL;
|
size = ((uint64_t) tracks * (uint64_t) hpc * (uint64_t) spt) << 9LL;
|
||||||
set_edit_box_contents(hdlg, IDC_EDIT_HD_HPC, hpc);
|
set_edit_box_contents(hdlg, IDC_EDIT_HD_HPC, (uint32_t) hpc);
|
||||||
set_edit_box_contents(hdlg, IDC_EDIT_HD_SIZE, (uint32_t) (size >> 20));
|
set_edit_box_contents(hdlg, IDC_EDIT_HD_SIZE, (uint32_t) (size >> 20));
|
||||||
recalc_selection(hdlg);
|
recalc_selection(hdlg);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (tracks > max_tracks) {
|
if (tracks > max_tracks) {
|
||||||
tracks = max_tracks;
|
tracks = max_tracks;
|
||||||
size = (tracks * hpc * spt) << 9LL;
|
size = ((uint64_t) tracks * (uint64_t) hpc * (uint64_t) spt) << 9LL;
|
||||||
set_edit_box_contents(hdlg, IDC_EDIT_HD_CYL, tracks);
|
set_edit_box_contents(hdlg, IDC_EDIT_HD_CYL, (uint32_t) tracks);
|
||||||
set_edit_box_contents(hdlg, IDC_EDIT_HD_SIZE, (uint32_t) (size >> 20));
|
set_edit_box_contents(hdlg, IDC_EDIT_HD_SIZE, (uint32_t) (size >> 20));
|
||||||
recalc_selection(hdlg);
|
recalc_selection(hdlg);
|
||||||
}
|
}
|
||||||
@@ -3105,24 +3105,24 @@ hdd_add_file_open_error:
|
|||||||
|
|
||||||
if (spt > max_spt) {
|
if (spt > max_spt) {
|
||||||
spt = max_spt;
|
spt = max_spt;
|
||||||
size = (tracks * hpc * spt) << 9LL;
|
size = ((uint64_t) tracks * (uint64_t) hpc * (uint64_t) spt) << 9LL;
|
||||||
set_edit_box_contents(hdlg, IDC_EDIT_HD_SPT, spt);
|
set_edit_box_contents(hdlg, IDC_EDIT_HD_SPT, (uint32_t) spt);
|
||||||
set_edit_box_contents(hdlg, IDC_EDIT_HD_SIZE, (uint32_t) (size >> 20));
|
set_edit_box_contents(hdlg, IDC_EDIT_HD_SIZE, (uint32_t) (size >> 20));
|
||||||
recalc_selection(hdlg);
|
recalc_selection(hdlg);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (hpc > max_hpc) {
|
if (hpc > max_hpc) {
|
||||||
hpc = max_hpc;
|
hpc = max_hpc;
|
||||||
size = (tracks * hpc * spt) << 9LL;
|
size = ((uint64_t) tracks * (uint64_t) hpc * (uint64_t) spt) << 9LL;
|
||||||
set_edit_box_contents(hdlg, IDC_EDIT_HD_HPC, hpc);
|
set_edit_box_contents(hdlg, IDC_EDIT_HD_HPC, (uint32_t) hpc);
|
||||||
set_edit_box_contents(hdlg, IDC_EDIT_HD_SIZE, (uint32_t) (size >> 20));
|
set_edit_box_contents(hdlg, IDC_EDIT_HD_SIZE, (uint32_t) (size >> 20));
|
||||||
recalc_selection(hdlg);
|
recalc_selection(hdlg);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (tracks > max_tracks) {
|
if (tracks > max_tracks) {
|
||||||
tracks = max_tracks;
|
tracks = max_tracks;
|
||||||
size = (tracks * hpc * spt) << 9LL;
|
size = ((uint64_t) tracks * (uint64_t) hpc * (uint64_t) spt) << 9LL;
|
||||||
set_edit_box_contents(hdlg, IDC_EDIT_HD_CYL, tracks);
|
set_edit_box_contents(hdlg, IDC_EDIT_HD_CYL, (uint32_t) tracks);
|
||||||
set_edit_box_contents(hdlg, IDC_EDIT_HD_SIZE, (uint32_t) (size >> 20));
|
set_edit_box_contents(hdlg, IDC_EDIT_HD_SIZE, (uint32_t) (size >> 20));
|
||||||
recalc_selection(hdlg);
|
recalc_selection(hdlg);
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user