Add M.O. drive models.

This commit is contained in:
2020-03-30 00:58:53 +01:00
parent 904273425d
commit 6bbde6320f
3 changed files with 16 additions and 15 deletions

View File

@@ -1573,8 +1573,8 @@ load_mo(config_t* cfg, const char* cat)
for (c = 0; c < MO_NUM; c++) {
sprintf(temp, "mo_%02i_parameters", c + 1);
p = config_get_string(cat, temp, "none");
sscanf(p, "%s", s);
p = config_get_string(cat, temp, "0, none");
sscanf(p, "%u, %s", (unsigned*)&mo_drives[c].type, s);
mo_drives[c].bus_type = mo_string_to_bus(s);
/* Default values, needed for proper operation of the Settings dialog. */
@@ -1654,7 +1654,7 @@ save_mo(const config_t* cfg, const char* cat)
config_delete_var(cat, temp);
}
else {
sprintf(tmp2, "%s",
sprintf(tmp2, "%u, %s", mo_drives[c].type,
mo_bus_to_string(mo_drives[c].bus_type));
config_set_string(cat, temp, tmp2);
}

View File

@@ -1388,12 +1388,6 @@ do_command(void *p, uint8_t *cdb)
buf_alloc(dev, 65536);
}
if (!(mode_sense_page_flags & (1LL << (uint64_t) (cdb[2] & 0x3f)))) {
invalid_field(dev);
buf_free(dev);
return;
}
memset(dev->buffer, 0, len);
alloc_length = len;
@@ -1524,9 +1518,9 @@ do_command(void *p, uint8_t *cdb)
dev->buffer[7] = 0x20; /* Wide bus supported */
}
ide_padstr8(dev->buffer + 8, 8, "VARCEM "); /* Vendor */
ide_padstr8(dev->buffer + 16, 16, "MAGNETO OPTICAL "); /* Product */
ide_padstr8(dev->buffer + 32, 4, "1.00"); /* Revision */
ide_padstr8(dev->buffer + 8, 8, mo_drive_types[dev->drv->type].vendor); /* Vendor */
ide_padstr8(dev->buffer + 16, 16, mo_drive_types[dev->drv->type].model); /* Product */
ide_padstr8(dev->buffer + 32, 4, mo_drive_types[dev->drv->type].revision); /* Revision */
idx = 36;
if (max_len == 96) {
@@ -2175,8 +2169,14 @@ packet_write(void *p, uint32_t val, int length)
static void
mo_identify(ide_t *ide, int ide_has_dma)
{
ide_padstr((char *) (ide->buffer + 23), "1.00", 8); /* Firmware */
ide_padstr((char *) (ide->buffer + 27), "VARCEM MAGNETO OPTICAL", 40); /* Model */
char model[40];
mo_t* mo = (mo_t*)ide->p;
memset(model, 0, 40);
snprintf(model, 40, "%s %s", mo_drive_types[mo_drives[mo->id].type].vendor, mo_drive_types[mo_drives[mo->id].type].model);
ide_padstr((char *) (ide->buffer + 23), mo_drive_types[mo_drives[mo->id].type].revision, 8); /* Firmware */
ide_padstr((char *) (ide->buffer + 27), model, 40); /* Model */
if (ide_has_dma) {
ide->buffer[80] = 0x30; /*Supported ATA versions : ATA/ATAPI-4 ATA/ATAPI-5*/
@@ -2486,7 +2486,7 @@ mo_load(mo_t *dev, const wchar_t *fn)
fseek(dev->drv->f, 0, SEEK_END);
size = ftell(dev->drv->f);
for(i = 0; i < sizeof(mo_types); i++)
for(i = 0; i < KNOWN_MO_TYPES; i++)
{
if(size == mo_types[i].disk_size)
{

View File

@@ -127,6 +127,7 @@ typedef struct {
uint32_t medium_size,
base;
uint16_t sector_size;
uint8_t type;
void *priv;