Fixed the first batch of problems.
This commit is contained in:
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user