Split cdrom and zip settings.

This commit is contained in:
2020-03-28 02:18:56 +00:00
parent a4228ca204
commit 39a9cb482e

View File

@@ -70,6 +70,7 @@
#include "devices/scsi/scsi_device.h"
#include "devices/cdrom/cdrom.h"
#include "devices/disk/zip.h"
#include "devices/disk/mo.h"
#include "devices/network/network.h"
#include "devices/sound/sound.h"
#include "devices/sound/midi.h"
@@ -1270,10 +1271,10 @@ save_floppy(const config_t *cfg, const char *cat)
}
/* Load "Removable Devices" section. */
/* Load "Multimedia Devices" section. */
//FIXME: stuff should be loaded into config_t !
static void
load_removable(config_t *cfg, const char *cat)
load_multimedia(config_t* cfg, const char* cat)
{
char temp[512], tmp2[512], * p;
char s[512];
@@ -1308,7 +1309,8 @@ load_removable(config_t *cfg, const char *cat)
if (cdrom[c].bus_id.ide_channel > 7)
cdrom[c].bus_id.ide_channel = 7;
} else {
}
else {
sprintf(temp, "cdrom_%02i_scsi_location", c + 1);
if (cdrom[c].bus_type == CDROM_BUS_SCSI) {
sprintf(tmp2, "%02u:%02u", c + 2, 0);
@@ -1321,7 +1323,8 @@ load_removable(config_t *cfg, const char *cat)
cdrom[c].bus_id.scsi.id = 15;
if (cdrom[c].bus_id.scsi.lun > 7)
cdrom[c].bus_id.scsi.lun = 7;
} else {
}
else {
config_delete_var(cat, temp);
}
}
@@ -1360,6 +1363,85 @@ load_removable(config_t *cfg, const char *cat)
sprintf(temp, "cdrom_%02i_iso_path", c + 1);
config_delete_var(cat, temp);
}
}
/* Save "Multimedia Devices" section. */
static void
save_multimedia(const config_t* cfg, const char* cat)
{
char temp[512], tmp2[512];
int c;
for (c = 0; c < CDROM_NUM; c++) {
sprintf(temp, "cdrom_%02i_host_drive", c + 1);
if ((cdrom[c].bus_type == 0) ||
(cdrom[c].host_drive < 'A') || ((cdrom[c].host_drive > 'Z') && (cdrom[c].host_drive != 200))) {
config_delete_var(cat, temp);
}
else {
config_set_int(cat, temp, cdrom[c].host_drive);
}
sprintf(temp, "cdrom_%02i_speed", c + 1);
if ((cdrom[c].bus_type == 0) ||
(cdrom_speeds[cdrom[c].speed_idx].speed == cdrom_speed_idx(CDROM_SPEED_DEFAULT))) {
config_delete_var(cat, temp);
}
else {
config_set_int(cat, temp, cdrom[c].speed_idx);
}
sprintf(temp, "cdrom_%02i_parameters", c + 1);
if (cdrom[c].bus_type == 0) {
config_delete_var(cat, temp);
}
else {
sprintf(tmp2, "%u, %s", cdrom[c].sound_on,
cdrom_bus_to_string(cdrom[c].bus_type));
config_set_string(cat, temp, tmp2);
}
sprintf(temp, "cdrom_%02i_ide_channel", c + 1);
if (cdrom[c].bus_type != CDROM_BUS_ATAPI) {
config_delete_var(cat, temp);
}
else {
sprintf(tmp2, "%01u:%01u", cdrom[c].bus_id.ide_channel >> 1,
cdrom[c].bus_id.ide_channel & 1);
config_set_string(cat, temp, tmp2);
}
sprintf(temp, "cdrom_%02i_scsi_location", c + 1);
if (cdrom[c].bus_type != CDROM_BUS_SCSI) {
config_delete_var(cat, temp);
}
else {
sprintf(tmp2, "%02u:%02u",
cdrom[c].bus_id.scsi.id, cdrom[c].bus_id.scsi.lun);
config_set_string(cat, temp, tmp2);
}
sprintf(temp, "cdrom_%02i_image_path", c + 1);
if ((cdrom[c].bus_type == 0) ||
(wcslen(cdrom[c].image_path) == 0)) {
config_delete_var(cat, temp);
}
else {
config_set_wstring(cat, temp, cdrom[c].image_path);
}
}
}
/* Load "IOMEGA Devices" section. */
//FIXME: stuff should be loaded into config_t !
static void
load_iomega(config_t* cfg, const char* cat)
{
char temp[512], tmp2[512], * p;
char s[512];
unsigned int board = 0, dev = 0;
wchar_t* wp;
int c;
for (c = 0; c < ZIP_NUM; c++) {
sprintf(temp, "zip_%02i_parameters", c + 1);
@@ -1382,9 +1464,10 @@ load_removable(config_t *cfg, const char *cat)
if (zip_drives[c].bus_id.ide_channel > 7)
zip_drives[c].bus_id.ide_channel = 7;
} else {
}
else {
sprintf(temp, "zip_%02i_scsi_location", c + 1);
if (zip_drives[c].bus_type == CDROM_BUS_SCSI) {
if (zip_drives[c].bus_type == ZIP_BUS_SCSI) {
sprintf(tmp2, "%02u:%02u", c + 2, 0);
p = config_get_string(cat, temp, tmp2);
sscanf(p, "%02u:%02u",
@@ -1395,7 +1478,8 @@ load_removable(config_t *cfg, const char *cat)
zip_drives[c].bus_id.scsi.id = 15;
if (zip_drives[c].bus_id.scsi.lun > 7)
zip_drives[c].bus_id.scsi.lun = 7;
} else {
}
else {
config_delete_var(cat, temp);
}
}
@@ -1406,7 +1490,7 @@ load_removable(config_t *cfg, const char *cat)
/* Try to make relative, and copy to destination. */
pc_path(zip_drives[c].image_path, sizeof_w(zip_drives[c].image_path), wp);
/* If the CD-ROM is disabled, delete all its variables. */
/* If the ZIP is disabled, delete all its variables. */
if (zip_drives[c].bus_type == ZIP_BUS_DISABLED) {
sprintf(temp, "zip_%02i_host_drive", c + 1);
config_delete_var(cat, temp);
@@ -1429,67 +1513,13 @@ load_removable(config_t *cfg, const char *cat)
}
}
/* Save "Other Removable Devices" section. */
/* Save "IOMEGA Devices" section. */
static void
save_removable(const config_t *cfg, const char *cat)
save_iomega(const config_t* cfg, const char* cat)
{
char temp[512], tmp2[512];
int c;
for (c = 0; c < CDROM_NUM; c++) {
sprintf(temp, "cdrom_%02i_host_drive", c+1);
if ((cdrom[c].bus_type == 0) ||
(cdrom[c].host_drive < 'A') || ((cdrom[c].host_drive > 'Z') && (cdrom[c].host_drive != 200))) {
config_delete_var(cat, temp);
} else {
config_set_int(cat, temp, cdrom[c].host_drive);
}
sprintf(temp, "cdrom_%02i_speed", c+1);
if ((cdrom[c].bus_type == 0) ||
(cdrom_speeds[cdrom[c].speed_idx].speed == cdrom_speed_idx(CDROM_SPEED_DEFAULT))) {
config_delete_var(cat, temp);
} else {
config_set_int(cat, temp, cdrom[c].speed_idx);
}
sprintf(temp, "cdrom_%02i_parameters", c+1);
if (cdrom[c].bus_type == 0) {
config_delete_var(cat, temp);
} else {
sprintf(tmp2, "%u, %s", cdrom[c].sound_on,
cdrom_bus_to_string(cdrom[c].bus_type));
config_set_string(cat, temp, tmp2);
}
sprintf(temp, "cdrom_%02i_ide_channel", c+1);
if (cdrom[c].bus_type != CDROM_BUS_ATAPI) {
config_delete_var(cat, temp);
} else {
sprintf(tmp2, "%01u:%01u", cdrom[c].bus_id.ide_channel>>1,
cdrom[c].bus_id.ide_channel & 1);
config_set_string(cat, temp, tmp2);
}
sprintf(temp, "cdrom_%02i_scsi_location", c + 1);
if (cdrom[c].bus_type != CDROM_BUS_SCSI) {
config_delete_var(cat, temp);
} else {
sprintf(tmp2, "%02u:%02u",
cdrom[c].bus_id.scsi.id, cdrom[c].bus_id.scsi.lun);
config_set_string(cat, temp, tmp2);
}
sprintf(temp, "cdrom_%02i_image_path", c + 1);
if ((cdrom[c].bus_type == 0) ||
(wcslen(cdrom[c].image_path) == 0)) {
config_delete_var(cat, temp);
} else {
config_set_wstring(cat, temp, cdrom[c].image_path);
}
}
for (c = 0; c < ZIP_NUM; c++) {
sprintf(temp, "zip_%02i_parameters", c+1);
if (zip_drives[c].bus_type == 0) {
@@ -1546,7 +1576,8 @@ static const struct {
{ "Other peripherals",load_other, save_other },
{ "Hard disks", load_disks, save_disks },
{ "Floppy drives", load_floppy, save_floppy },
{ "Other removable devices",load_removable, save_removable },
{ "CD/DVD devices",load_multimedia, save_multimedia },
{ "IOMEGA devices",load_iomega, save_iomega },
{ NULL, NULL, NULL }
};