Some tweaks to hard disk image creation.

This commit is contained in:
OBattler
2018-03-19 09:48:44 +01:00
parent 7d070e2930
commit 7237cc7237
4 changed files with 42 additions and 32 deletions

View File

@@ -8,7 +8,7 @@
*
* Main include file for the application.
*
* Version: @(#)86box.h 1.0.20 2018/03/18
* Version: @(#)86box.h 1.0.21 2018/03/19
*
* Authors: Miran Grca, <mgrca8@gmail.com>
* Fred N. van Kempen, <decwiz@yahoo.com>
@@ -134,6 +134,7 @@ extern int config_changed; /* config has changed */
#ifdef HAVE_STDARG_H
extern void pclog_ex(const char *fmt, va_list);
#endif
extern void pclog_toggle_suppr(void);
extern void pclog(const char *fmt, ...);
extern void fatal(const char *fmt, ...);
extern void set_screen_size(int x, int y);

View File

@@ -8,7 +8,7 @@
*
* Handling of hard disk image files.
*
* Version: @(#)hdd_image.c 1.0.12 2018/02/08
* Version: @(#)hdd_image.c 1.0.13 2018/03/19
*
* Authors: Miran Grca, <mgrca8@gmail.com>
* Fred N. van Kempen, <decwiz@yahoo.com>
@@ -288,29 +288,29 @@ int hdd_image_load(int id)
if (ftello64(hdd_images[id].file) < (full_size + hdd_images[id].base)) {
s = (full_size + hdd_images[id].base) - ftello64(hdd_images[id].file);
prepare_new_hard_disk:
s >>= 9;
t = (s >> 11) << 11;
s -= t;
t >>= 11;
t = s >> 20; /* Amount of 1 MB blocks. */
s &= 0xfffff; /* 1 MB mask. */
empty_sector_1mb = (char *) malloc(1048576);
memset(empty_sector_1mb, 0, 1048576);
/* Temporarily switch off suppression of seen messages so that the
progress gets displayed. */
pclog_toggle_suppr();
pclog("Writing image sectors: [");
if (s > 0) {
for (i = 0; i < s; i++) {
/* First, write all the 1 MB blocks. */
if (t > 0) {
for (i = 0; i < t; i++) {
fwrite(empty_sector_1mb, 1, 1045876, hdd_images[id].file);
pclog("#");
fwrite(empty_sector, 1, 512, hdd_images[id].file);
}
}
if (t > 0) {
for (i = 0; i < t; i++) {
pclog("#");
fwrite(empty_sector_1mb, 1, 1045876, hdd_images[id].file);
}
}
pclog("]\n");
/* Then, write the remainder. */
fwrite(empty_sector_1mb, 1, s, hdd_images[id].file);
pclog("#]\n");
pclog_toggle_suppr();
free(empty_sector_1mb);
}

View File

@@ -8,7 +8,7 @@
*
* Main emulator module where most things are controlled.
*
* Version: @(#)pc.c 1.0.67 2018/03/19
* Version: @(#)pc.c 1.0.68 2018/03/19
*
* Authors: Sarah Walker, <http://pcem-emulator.co.uk/>
* Miran Grca, <mgrca8@gmail.com>
@@ -170,9 +170,13 @@ int unscaled_size_x = SCREEN_RES_X, /* current unscaled size X */
efscrnsz_y = SCREEN_RES_Y;
#ifndef RELEASE_BUILD
static char buff[1024];
static int seen = 0;
static int suppr_seen = 1;
#endif
/*
* Log something to the logfile or stdout.
*
@@ -197,10 +201,10 @@ pclog_ex(const char *fmt, va_list ap)
}
vsprintf(temp, fmt, ap);
if (! strcmp(buff, temp)) {
if (suppr_seen && ! strcmp(buff, temp)) {
seen++;
} else {
if (seen) {
if (suppr_seen && seen) {
fprintf(stdlog, "*** %d repeats ***\n", seen);
}
seen = 0;
@@ -213,6 +217,15 @@ pclog_ex(const char *fmt, va_list ap)
}
void
pclog_toggle_suppr(void)
{
#ifndef RELEASE_BUILD
suppr_seen ^= 1;
#endif
}
/* Log something. We only do this in non-release builds. */
void
pclog(const char *fmt, ...)

View File

@@ -8,7 +8,7 @@
*
* Windows 86Box Settings dialog handler.
*
* Version: @(#)win_settings.c 1.0.45 2018/03/19
* Version: @(#)win_settings.c 1.0.46 2018/03/19
*
* Author: Miran Grca, <mgrca8@gmail.com>
*
@@ -2986,10 +2986,9 @@ win_settings_hard_disks_add_proc(HWND hdlg, UINT message, WPARAM wParam, LPARAM
}
memset(buf, 0, 512);
size >>= 9;
r = (size >> 11) << 11;
size -= r;
r >>= 11;
r = size >> 20;
size &= 0xfffff;
if (size || r) {
h = GetDlgItem(hdlg, IDT_1731);
@@ -3005,10 +3004,10 @@ win_settings_hard_disks_add_proc(HWND hdlg, UINT message, WPARAM wParam, LPARAM
ShowWindow(h, SW_HIDE);
h = GetDlgItem(hdlg, IDC_PBAR_IMG_CREATE);
SendMessage(h, PBM_SETRANGE32, (WPARAM) 0, (LPARAM) (size + r - 1));
SendMessage(h, PBM_SETPOS, (WPARAM) 0, (LPARAM) 0);
EnableWindow(h, TRUE);
ShowWindow(h, SW_SHOW);
SendMessage(h, PBM_SETRANGE32, (WPARAM) 0, (LPARAM) r);
SendMessage(h, PBM_SETPOS, (WPARAM) 0, (LPARAM) 0);
h = GetDlgItem(hdlg, IDT_1752);
EnableWindow(h, TRUE);
@@ -3017,11 +3016,8 @@ win_settings_hard_disks_add_proc(HWND hdlg, UINT message, WPARAM wParam, LPARAM
if (size)
{
for (i = 0; i < size; i++)
{
fwrite(buf, 1, 512, f);
SendMessage(h, PBM_SETPOS, (WPARAM) i, (LPARAM) 0);
}
fwrite(buf, 1, size, f);
SendMessage(h, PBM_SETPOS, (WPARAM) 1, (LPARAM) 0);
}
if (r)
@@ -3031,7 +3027,7 @@ win_settings_hard_disks_add_proc(HWND hdlg, UINT message, WPARAM wParam, LPARAM
for (i = 0; i < r; i++)
{
fwrite(big_buf, 1, 1048576, f);
SendMessage(h, PBM_SETPOS, (WPARAM) (size + i), (LPARAM) 0);
SendMessage(h, PBM_SETPOS, (WPARAM) (size + 1), (LPARAM) 0);
}
free(big_buf);
}