Fixed the first batch of problems.
This commit is contained in:
12
src/config.c
12
src/config.c
@@ -566,6 +566,7 @@ load_video(void)
|
||||
{
|
||||
char *cat = "Video";
|
||||
char *p;
|
||||
int free_p = 0;
|
||||
|
||||
if (machines[machine].flags & MACHINE_VIDEO_FIXED) {
|
||||
config_delete_var(cat, "gfxcard");
|
||||
@@ -580,8 +581,11 @@ load_video(void)
|
||||
p = (char *)malloc((strlen("none")+1)*sizeof(char));
|
||||
strcpy(p, "none");
|
||||
}
|
||||
free_p = 1;
|
||||
}
|
||||
gfxcard = video_get_video_from_internal_name(p);
|
||||
if (free_p)
|
||||
free(p);
|
||||
}
|
||||
|
||||
voodoo_enabled = !!config_get_int(cat, "voodoo", 0);
|
||||
@@ -763,7 +767,7 @@ load_other_peripherals(void)
|
||||
char *cat = "Other peripherals";
|
||||
char *p;
|
||||
char temp[512];
|
||||
int c;
|
||||
int c, free_p = 0;
|
||||
|
||||
p = config_get_string(cat, "scsicard", NULL);
|
||||
if (p != NULL)
|
||||
@@ -780,6 +784,7 @@ load_other_peripherals(void)
|
||||
p = (char *)malloc((strlen("none")+1)*sizeof(char));
|
||||
strcpy(p, "none");
|
||||
}
|
||||
free_p = 1;
|
||||
}
|
||||
if (!strcmp(p, "mfm_xt"))
|
||||
hdc_current = hdc_get_from_internal_name("st506_xt");
|
||||
@@ -790,6 +795,11 @@ load_other_peripherals(void)
|
||||
else
|
||||
hdc_current = hdc_get_from_internal_name(p);
|
||||
|
||||
if (free_p) {
|
||||
free(p);
|
||||
p = NULL;
|
||||
}
|
||||
|
||||
ide_ter_enabled = !!config_get_int(cat, "ide_ter", 0);
|
||||
ide_qua_enabled = !!config_get_int(cat, "ide_qua", 0);
|
||||
|
||||
|
@@ -166,7 +166,10 @@ image_is_vhd(const wchar_t *s, int check_signature)
|
||||
return 0;
|
||||
fseeko64(f, 0, SEEK_END);
|
||||
filelen = ftello64(f);
|
||||
fseeko64(f, -512, SEEK_END);
|
||||
if (fseeko64(f, -512, SEEK_END) == -1) {
|
||||
fclose(f);
|
||||
fatal("image_is_vhd(): Error seeking\n");
|
||||
}
|
||||
if (filelen < 512) {
|
||||
if (f != NULL)
|
||||
fclose(f);
|
||||
|
@@ -3779,10 +3779,13 @@ d86f_load(int drive, wchar_t *fn)
|
||||
}
|
||||
|
||||
/* Load track 0 flags as default. */
|
||||
fseek(dev->f, dev->track_offset[0], SEEK_SET);
|
||||
fread(&(dev->side_flags[0]), 2, 1, dev->f);
|
||||
if (fseek(dev->f, dev->track_offset[0], SEEK_SET) == -1)
|
||||
fatal("d86f_load(): Track 0: Error seeking to the beginning of the file\n");
|
||||
if (fread(&(dev->side_flags[0]), 1, 2, dev->f) != 2)
|
||||
fatal("d86f_load(): Track 0: Error reading side flags\n");
|
||||
if (dev->disk_flags & 0x80) {
|
||||
fread(&(dev->extra_bit_cells[0]), 4, 1, dev->f);
|
||||
if (fread(&(dev->extra_bit_cells[0]), 1, 4, dev->f) != 4)
|
||||
fatal("d86f_load(): Track 0: Error reading the amount of extra bit cells\n");
|
||||
if ((dev->disk_flags & 0x1060) != 0x1000) {
|
||||
if (dev->extra_bit_cells[0] < -32768) dev->extra_bit_cells[0] = -32768;
|
||||
if (dev->extra_bit_cells[0] > 32768) dev->extra_bit_cells[0] = 32768;
|
||||
@@ -3792,10 +3795,13 @@ d86f_load(int drive, wchar_t *fn)
|
||||
}
|
||||
|
||||
if (d86f_get_sides(drive) == 2) {
|
||||
fseek(dev->f, dev->track_offset[1], SEEK_SET);
|
||||
fread(&(dev->side_flags[1]), 2, 1, dev->f);
|
||||
if (fseek(dev->f, dev->track_offset[1], SEEK_SET) == -1)
|
||||
fatal("d86f_load(): Track 1: Error seeking to the beginning of the file\n");
|
||||
if (fread(&(dev->side_flags[1]), 1, 2, dev->f) != 2)
|
||||
fatal("d86f_load(): Track 1: Error reading side flags\n");
|
||||
if (dev->disk_flags & 0x80) {
|
||||
fread(&(dev->extra_bit_cells[1]), 4, 1, dev->f);
|
||||
if (fread(&(dev->extra_bit_cells[1]), 1, 4, dev->f) != 4)
|
||||
fatal("d86f_load(): Track 4: Error reading the amount of extra bit cells\n");
|
||||
if ((dev->disk_flags & 0x1060) != 0x1000) {
|
||||
if (dev->extra_bit_cells[1] < -32768) dev->extra_bit_cells[1] = -32768;
|
||||
if (dev->extra_bit_cells[1] > 32768) dev->extra_bit_cells[1] = 32768;
|
||||
|
@@ -393,15 +393,19 @@ write_back(int drive)
|
||||
{
|
||||
img_t *dev = img[drive];
|
||||
int ssize = 128 << ((int) dev->sector_size);
|
||||
int side;
|
||||
int side, size;
|
||||
|
||||
if (dev->f == NULL) return;
|
||||
|
||||
if (dev->disk_at_once) return;
|
||||
|
||||
fseek(dev->f, dev->base + (dev->track * dev->sectors * ssize * dev->sides), SEEK_SET);
|
||||
for (side = 0; side < dev->sides; side++)
|
||||
fwrite(dev->track_data[side], dev->sectors * ssize, 1, dev->f);
|
||||
if (fseek(dev->f, dev->base + (dev->track * dev->sectors * ssize * dev->sides), SEEK_SET) == -1)
|
||||
pclog("IMG write_back(): Error seeking to the beginning of the file\n");
|
||||
for (side = 0; side < dev->sides; side++) {
|
||||
size = dev->sectors * ssize;
|
||||
if (fwrite(dev->track_data[side], 1, size, dev->f) != size)
|
||||
fatal("IMG write_back(): Error writing data\n");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1156,8 +1160,12 @@ jump_if_fdf:
|
||||
dev->gap2_size = (temp_rate == 3) ? 41 : 22;
|
||||
if (dev->dmf)
|
||||
dev->gap3_size = 8;
|
||||
else
|
||||
dev->gap3_size = gap3_sizes[temp_rate][dev->sector_size][dev->sectors];
|
||||
else {
|
||||
if (dev->sectors == -1)
|
||||
dev->gap3_size = 8;
|
||||
else
|
||||
dev->gap3_size = gap3_sizes[temp_rate][dev->sector_size][dev->sectors];
|
||||
}
|
||||
if (! dev->gap3_size) {
|
||||
img_log("ERROR: Floppy image of unknown format was inserted into drive %c:!\n", drive + 0x41);
|
||||
fclose(dev->f);
|
||||
|
@@ -1293,7 +1293,8 @@ eep_init(const device_t *info)
|
||||
|
||||
f = nvr_fopen(eep->path, L"rb");
|
||||
if (f != NULL) {
|
||||
fread(eep->store, 128, 1, f);
|
||||
if (fread(eep->store, 1, 128, f) != 128)
|
||||
fatal("eep_init(): Error reading Tandy EEPROM\n");
|
||||
(void)fclose(f);
|
||||
}
|
||||
|
||||
|
@@ -157,10 +157,10 @@ machine_xt86_init(const machine_t *model)
|
||||
ret = bios_load_linear(L"roms/machines/ibmxt86/BIOS_5160_09MAY86_U18_59X7268_62X0890_27256_F800.BIN",
|
||||
0x000fe000, 65536, 0x6000);
|
||||
if (ret) {
|
||||
bios_load_aux_linear(L"roms/machines/ibmxt86/BIOS_5160_09MAY86_U18_59X7268_62X0890_27256_F800.BIN",
|
||||
0x000f8000, 24576, 0);
|
||||
bios_load_aux_linear(L"roms/machines/ibmxt86/BIOS_5160_09MAY86_U19_62X0819_68X4370_27256_F000.BIN",
|
||||
0x000f0000, 32768, 0);
|
||||
(void) bios_load_aux_linear(L"roms/machines/ibmxt86/BIOS_5160_09MAY86_U18_59X7268_62X0890_27256_F800.BIN",
|
||||
0x000f8000, 24576, 0);
|
||||
(void) bios_load_aux_linear(L"roms/machines/ibmxt86/BIOS_5160_09MAY86_U19_62X0819_68X4370_27256_F000.BIN",
|
||||
0x000f0000, 32768, 0);
|
||||
}
|
||||
|
||||
if (bios_only || !ret)
|
||||
|
@@ -128,7 +128,8 @@ ps2_nvr_init(const device_t *info)
|
||||
|
||||
memset(nvr->ram, 0xff, 8192);
|
||||
if (f != NULL) {
|
||||
(void)fread(nvr->ram, 8192, 1, f);
|
||||
if (fread(nvr->ram, 1, 8192, f) != 8192)
|
||||
fatal("ps2_nvr_init(): Error reading EEPROM data\n");
|
||||
fclose(f);
|
||||
}
|
||||
|
||||
|
@@ -58,18 +58,20 @@ enum
|
||||
void ati_eeprom_load(ati_eeprom_t *eeprom, wchar_t *fn, int type)
|
||||
{
|
||||
FILE *f;
|
||||
int size;
|
||||
eeprom->type = type;
|
||||
if (wcslen(fn) <= 256)
|
||||
wcscpy(eeprom->fn, fn);
|
||||
else
|
||||
wcsncpy(eeprom->fn, fn, 256);
|
||||
f = nvr_fopen(eeprom->fn, L"rb");
|
||||
if (!f)
|
||||
{
|
||||
memset(eeprom->data, 0, eeprom->type ? 512 : 128);
|
||||
int size = eeprom->type ? 512 : 128;
|
||||
if (!f) {
|
||||
memset(eeprom->data, 0, size);
|
||||
return;
|
||||
}
|
||||
fread(eeprom->data, 1, eeprom->type ? 512 : 128, f);
|
||||
if (fread(eeprom->data, 1, size, f) != size)
|
||||
memset(eeprom->data, 0, size);
|
||||
fclose(f);
|
||||
}
|
||||
|
||||
|
@@ -2065,8 +2065,12 @@ pgc_parse_coords(pgc_t *dev, pgc_cl_t *cl, int count)
|
||||
return 0;
|
||||
}
|
||||
|
||||
for (n = 0; n < count; n++)
|
||||
if (! pgc_param_coord(dev, ¶m[n])) return 0;
|
||||
for (n = 0; n < count; n++) {
|
||||
if (! pgc_param_coord(dev, ¶m[n])) {
|
||||
free(param);
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
/* Here is how the real PGC serializes coords:
|
||||
*
|
||||
|
@@ -308,6 +308,7 @@ void tgui_out(uint16_t addr, uint8_t val, void *p)
|
||||
}
|
||||
return;
|
||||
}
|
||||
/*FALLTHROUGH*/
|
||||
case 0x3C7: case 0x3C8: case 0x3C9:
|
||||
if (tgui->type == TGUI_9400CXI)
|
||||
{
|
||||
|
Reference in New Issue
Block a user