Added WD1007V-SE1 ESDI emulation.
This commit is contained in:
parent
6484baaf9f
commit
5d6c3fb9ea
16 changed files with 891 additions and 29 deletions
|
|
@ -52,34 +52,55 @@ void hdd_close(hdd_file_t *hdd)
|
|||
}
|
||||
}
|
||||
|
||||
void hdd_read_sectors(hdd_file_t *hdd, int offset, int nr_sectors, void *buffer)
|
||||
int hdd_read_sectors(hdd_file_t *hdd, int offset, int nr_sectors, void *buffer)
|
||||
{
|
||||
off64_t addr;
|
||||
|
||||
int transfer_sectors = nr_sectors;
|
||||
|
||||
if ((hdd->sectors - offset) < transfer_sectors)
|
||||
transfer_sectors = hdd->sectors - offset;
|
||||
addr = offset * 512;
|
||||
fseeko64(hdd->f, addr, SEEK_SET);
|
||||
fread(buffer, nr_sectors*512, 1, hdd->f);
|
||||
fread(buffer, transfer_sectors*512, 1, hdd->f);
|
||||
|
||||
if (nr_sectors != transfer_sectors)
|
||||
return 1;
|
||||
return 0;
|
||||
}
|
||||
|
||||
void hdd_write_sectors(hdd_file_t *hdd, int offset, int nr_sectors, void *buffer)
|
||||
int hdd_write_sectors(hdd_file_t *hdd, int offset, int nr_sectors, void *buffer)
|
||||
{
|
||||
off64_t addr;
|
||||
|
||||
int transfer_sectors = nr_sectors;
|
||||
|
||||
if ((hdd->sectors - offset) < transfer_sectors)
|
||||
transfer_sectors = hdd->sectors - offset;
|
||||
addr = offset * 512;
|
||||
fseeko64(hdd->f, addr, SEEK_SET);
|
||||
fwrite(buffer, nr_sectors*512, 1, hdd->f);
|
||||
fwrite(buffer, transfer_sectors*512, 1, hdd->f);
|
||||
|
||||
if (nr_sectors != transfer_sectors)
|
||||
return 1;
|
||||
return 0;
|
||||
}
|
||||
|
||||
void hdd_format_sectors(hdd_file_t *hdd, int offset, int nr_sectors)
|
||||
int hdd_format_sectors(hdd_file_t *hdd, int offset, int nr_sectors)
|
||||
{
|
||||
off64_t addr;
|
||||
int c;
|
||||
uint8_t zero_buffer[512];
|
||||
|
||||
int transfer_sectors = nr_sectors;
|
||||
|
||||
memset(zero_buffer, 0, 512);
|
||||
|
||||
if ((hdd->sectors - offset) < transfer_sectors)
|
||||
transfer_sectors = hdd->sectors - offset;
|
||||
addr = offset * 512;
|
||||
fseeko64(hdd->f, addr, SEEK_SET);
|
||||
for (c = 0; c < nr_sectors; c++)
|
||||
for (c = 0; c < transfer_sectors; c++)
|
||||
fwrite(zero_buffer, 512, 1, hdd->f);
|
||||
|
||||
if (nr_sectors != transfer_sectors)
|
||||
return 1;
|
||||
return 0;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue