Merge the XTIDE XT/XT+ and AT/386 BIOS variations
This commit is contained in:
22
src/config.c
22
src/config.c
@@ -772,6 +772,7 @@ static void
|
|||||||
load_storage_controllers(void)
|
load_storage_controllers(void)
|
||||||
{
|
{
|
||||||
ini_section_t cat = ini_find_section(config, "Storage controllers");
|
ini_section_t cat = ini_find_section(config, "Storage controllers");
|
||||||
|
ini_section_t migration_cat;
|
||||||
char *p;
|
char *p;
|
||||||
char temp[512];
|
char temp[512];
|
||||||
int c;
|
int c;
|
||||||
@@ -805,17 +806,16 @@ load_storage_controllers(void)
|
|||||||
}
|
}
|
||||||
free_p = 1;
|
free_p = 1;
|
||||||
}
|
}
|
||||||
if (!strcmp(p, "mfm_xt"))
|
/* Migrate renamed and merged cards. */
|
||||||
hdc_current = hdc_get_from_internal_name("st506_xt");
|
if (!strcmp(p, "xtide_plus")) {
|
||||||
else if (!strcmp(p, "mfm_xt_dtc5150x"))
|
hdc_current = hdc_get_from_internal_name("xtide");
|
||||||
hdc_current = hdc_get_from_internal_name("st506_xt_dtc5150x");
|
migration_cat = ini_find_or_create_section(config, "PC/XT XTIDE");
|
||||||
else if (!strcmp(p, "mfm_at"))
|
ini_section_set_string(migration_cat, "bios", "xt_plus");
|
||||||
hdc_current = hdc_get_from_internal_name("st506_at");
|
} else if (!strcmp(p, "xtide_at_386")) {
|
||||||
else if (!strcmp(p, "vlb_isa"))
|
hdc_current = hdc_get_from_internal_name("xtide_at");
|
||||||
hdc_current = hdc_get_from_internal_name("ide_vlb");
|
migration_cat = ini_find_or_create_section(config, "PC/AT XTIDE");
|
||||||
else if (!strcmp(p, "vlb_isa_2ch"))
|
ini_section_set_string(migration_cat, "bios", "at_386");
|
||||||
hdc_current = hdc_get_from_internal_name("ide_vlb_2ch");
|
} else
|
||||||
else
|
|
||||||
hdc_current = hdc_get_from_internal_name(p);
|
hdc_current = hdc_get_from_internal_name(p);
|
||||||
|
|
||||||
if (free_p) {
|
if (free_p) {
|
||||||
|
@@ -100,12 +100,10 @@ static const struct {
|
|||||||
{ &ide_isa_device },
|
{ &ide_isa_device },
|
||||||
{ &ide_isa_2ch_device },
|
{ &ide_isa_2ch_device },
|
||||||
{ &xtide_at_device },
|
{ &xtide_at_device },
|
||||||
{ &xtide_at_386_device },
|
|
||||||
{ &xtide_at_ps2_device },
|
{ &xtide_at_ps2_device },
|
||||||
{ &xta_wdxt150_device },
|
{ &xta_wdxt150_device },
|
||||||
{ &xtide_acculogic_device },
|
{ &xtide_acculogic_device },
|
||||||
{ &xtide_device },
|
{ &xtide_device },
|
||||||
{ &xtide_plus_device },
|
|
||||||
{ &esdi_ps2_device },
|
{ &esdi_ps2_device },
|
||||||
{ &ide_pci_device },
|
{ &ide_pci_device },
|
||||||
{ &ide_pci_2ch_device },
|
{ &ide_pci_2ch_device },
|
||||||
|
@@ -49,9 +49,9 @@
|
|||||||
#define ROM_PATH_XT "roms/hdd/xtide/ide_xt.bin"
|
#define ROM_PATH_XT "roms/hdd/xtide/ide_xt.bin"
|
||||||
#define ROM_PATH_XTP "roms/hdd/xtide/ide_xtp.bin"
|
#define ROM_PATH_XTP "roms/hdd/xtide/ide_xtp.bin"
|
||||||
#define ROM_PATH_AT "roms/hdd/xtide/ide_at.bin"
|
#define ROM_PATH_AT "roms/hdd/xtide/ide_at.bin"
|
||||||
|
#define ROM_PATH_AT_386 "roms/hdd/xtide/ide_386.bin"
|
||||||
#define ROM_PATH_PS2 "roms/hdd/xtide/SIDE1V12.BIN"
|
#define ROM_PATH_PS2 "roms/hdd/xtide/SIDE1V12.BIN"
|
||||||
#define ROM_PATH_PS2AT "roms/hdd/xtide/ide_at_1_1_5.bin"
|
#define ROM_PATH_PS2AT "roms/hdd/xtide/ide_at_1_1_5.bin"
|
||||||
#define ROM_PATH_AT_386 "roms/hdd/xtide/ide_386.bin"
|
|
||||||
|
|
||||||
typedef struct xtide_t {
|
typedef struct xtide_t {
|
||||||
void *ide_board;
|
void *ide_board;
|
||||||
@@ -136,13 +136,9 @@ xtide_init(const device_t *info)
|
|||||||
|
|
||||||
memset(xtide, 0x00, sizeof(xtide_t));
|
memset(xtide, 0x00, sizeof(xtide_t));
|
||||||
|
|
||||||
if (info->local == 1) {
|
rom_init(&xtide->bios_rom,
|
||||||
rom_init(&xtide->bios_rom, ROM_PATH_XTP,
|
device_get_bios_file(info, device_get_config_bios("bios"), 0),
|
||||||
0xc8000, 0x2000, 0x1fff, 0, MEM_MAPPING_EXTERNAL);
|
0xc8000, 0x2000, 0x1fff, 0, MEM_MAPPING_EXTERNAL);
|
||||||
} else {
|
|
||||||
rom_init(&xtide->bios_rom, ROM_PATH_XT,
|
|
||||||
0xc8000, 0x2000, 0x1fff, 0, MEM_MAPPING_EXTERNAL);
|
|
||||||
}
|
|
||||||
|
|
||||||
xtide->ide_board = ide_xtide_init();
|
xtide->ide_board = ide_xtide_init();
|
||||||
|
|
||||||
@@ -153,18 +149,6 @@ xtide_init(const device_t *info)
|
|||||||
return xtide;
|
return xtide;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
|
||||||
xtide_available(void)
|
|
||||||
{
|
|
||||||
return (rom_present(ROM_PATH_XT));
|
|
||||||
}
|
|
||||||
|
|
||||||
static int
|
|
||||||
xtide_plus_available(void)
|
|
||||||
{
|
|
||||||
return (rom_present(ROM_PATH_XTP));
|
|
||||||
}
|
|
||||||
|
|
||||||
static void *
|
static void *
|
||||||
xtide_at_init(const device_t *info)
|
xtide_at_init(const device_t *info)
|
||||||
{
|
{
|
||||||
@@ -172,31 +156,15 @@ xtide_at_init(const device_t *info)
|
|||||||
|
|
||||||
memset(xtide, 0x00, sizeof(xtide_t));
|
memset(xtide, 0x00, sizeof(xtide_t));
|
||||||
|
|
||||||
if (info->local == 1) {
|
rom_init(&xtide->bios_rom,
|
||||||
rom_init(&xtide->bios_rom, ROM_PATH_AT_386,
|
device_get_bios_file(info, device_get_config_bios("bios"), 0),
|
||||||
0xc8000, 0x2000, 0x1fff, 0, MEM_MAPPING_EXTERNAL);
|
0xc8000, 0x2000, 0x1fff, 0, MEM_MAPPING_EXTERNAL);
|
||||||
} else {
|
|
||||||
rom_init(&xtide->bios_rom, ROM_PATH_AT,
|
|
||||||
0xc8000, 0x2000, 0x1fff, 0, MEM_MAPPING_EXTERNAL);
|
|
||||||
}
|
|
||||||
|
|
||||||
device_add(&ide_isa_2ch_device);
|
device_add(&ide_isa_2ch_device);
|
||||||
|
|
||||||
return xtide;
|
return xtide;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
|
||||||
xtide_at_available(void)
|
|
||||||
{
|
|
||||||
return (rom_present(ROM_PATH_AT));
|
|
||||||
}
|
|
||||||
|
|
||||||
static int
|
|
||||||
xtide_at_386_available(void)
|
|
||||||
{
|
|
||||||
return (rom_present(ROM_PATH_AT_386));
|
|
||||||
}
|
|
||||||
|
|
||||||
static void *
|
static void *
|
||||||
xtide_acculogic_init(UNUSED(const device_t *info))
|
xtide_acculogic_init(UNUSED(const device_t *info))
|
||||||
{
|
{
|
||||||
@@ -261,6 +229,50 @@ xtide_at_close(void *priv)
|
|||||||
free(xtide);
|
free(xtide);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static const device_config_t xtide_config[] = {
|
||||||
|
// clang-format off
|
||||||
|
{
|
||||||
|
.name = "bios",
|
||||||
|
.description = "BIOS",
|
||||||
|
.type = CONFIG_BIOS,
|
||||||
|
.default_string = "xt",
|
||||||
|
.default_int = 0,
|
||||||
|
.file_filter = "",
|
||||||
|
.spinner = { 0 }, /*W1*/
|
||||||
|
.bios = {
|
||||||
|
{ .name = "Regular XT", .internal_name = "xt", .bios_type = BIOS_NORMAL,
|
||||||
|
.files_no = 1, .local = 0, .size = 8192, .files = { ROM_PATH_XT, "" } },
|
||||||
|
{ .name = "XT+ (V20/V30/8018x)", .internal_name = "xt_plus", .bios_type = BIOS_NORMAL,
|
||||||
|
.files_no = 1, .local = 0, .size = 8192, .files = { ROM_PATH_XTP, "" } },
|
||||||
|
{ .files_no = 0 }
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{ .name = "", .description = "", .type = CONFIG_END }
|
||||||
|
// clang-format on
|
||||||
|
};
|
||||||
|
|
||||||
|
static const device_config_t xtide_at_config[] = {
|
||||||
|
// clang-format off
|
||||||
|
{
|
||||||
|
.name = "bios",
|
||||||
|
.description = "BIOS",
|
||||||
|
.type = CONFIG_BIOS,
|
||||||
|
.default_string = "at",
|
||||||
|
.default_int = 0,
|
||||||
|
.file_filter = "",
|
||||||
|
.spinner = { 0 }, /*W1*/
|
||||||
|
.bios = {
|
||||||
|
{ .name = "Regular AT", .internal_name = "at", .bios_type = BIOS_NORMAL,
|
||||||
|
.files_no = 1, .local = 0, .size = 8192, .files = { ROM_PATH_AT, "" } },
|
||||||
|
{ .name = "386", .internal_name = "at_386", .bios_type = BIOS_NORMAL,
|
||||||
|
.files_no = 1, .local = 0, .size = 8192, .files = { ROM_PATH_AT_386, "" } },
|
||||||
|
{ .files_no = 0 }
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{ .name = "", .description = "", .type = CONFIG_END }
|
||||||
|
// clang-format on
|
||||||
|
};
|
||||||
|
|
||||||
const device_t xtide_device = {
|
const device_t xtide_device = {
|
||||||
.name = "PC/XT XTIDE",
|
.name = "PC/XT XTIDE",
|
||||||
.internal_name = "xtide",
|
.internal_name = "xtide",
|
||||||
@@ -269,24 +281,10 @@ const device_t xtide_device = {
|
|||||||
.init = xtide_init,
|
.init = xtide_init,
|
||||||
.close = xtide_close,
|
.close = xtide_close,
|
||||||
.reset = NULL,
|
.reset = NULL,
|
||||||
{ .available = xtide_available },
|
{ .available = NULL },
|
||||||
.speed_changed = NULL,
|
.speed_changed = NULL,
|
||||||
.force_redraw = NULL,
|
.force_redraw = NULL,
|
||||||
.config = NULL
|
.config = xtide_config
|
||||||
};
|
|
||||||
|
|
||||||
const device_t xtide_plus_device = {
|
|
||||||
.name = "PC/XT XTIDE (V20/V30/8018x)",
|
|
||||||
.internal_name = "xtide_plus",
|
|
||||||
.flags = DEVICE_ISA,
|
|
||||||
.local = 1,
|
|
||||||
.init = xtide_init,
|
|
||||||
.close = xtide_close,
|
|
||||||
.reset = NULL,
|
|
||||||
{ .available = xtide_plus_available },
|
|
||||||
.speed_changed = NULL,
|
|
||||||
.force_redraw = NULL,
|
|
||||||
.config = NULL
|
|
||||||
};
|
};
|
||||||
|
|
||||||
const device_t xtide_at_device = {
|
const device_t xtide_at_device = {
|
||||||
@@ -297,24 +295,10 @@ const device_t xtide_at_device = {
|
|||||||
.init = xtide_at_init,
|
.init = xtide_at_init,
|
||||||
.close = xtide_at_close,
|
.close = xtide_at_close,
|
||||||
.reset = NULL,
|
.reset = NULL,
|
||||||
{ .available = xtide_at_available },
|
{ .available = NULL },
|
||||||
.speed_changed = NULL,
|
.speed_changed = NULL,
|
||||||
.force_redraw = NULL,
|
.force_redraw = NULL,
|
||||||
.config = NULL
|
.config = xtide_at_config
|
||||||
};
|
|
||||||
|
|
||||||
const device_t xtide_at_386_device = {
|
|
||||||
.name = "PC/AT XTIDE (386)",
|
|
||||||
.internal_name = "xtide_at_386",
|
|
||||||
.flags = DEVICE_ISA | DEVICE_AT,
|
|
||||||
.local = 1,
|
|
||||||
.init = xtide_at_init,
|
|
||||||
.close = xtide_at_close,
|
|
||||||
.reset = NULL,
|
|
||||||
{ .available = xtide_at_386_available },
|
|
||||||
.speed_changed = NULL,
|
|
||||||
.force_redraw = NULL,
|
|
||||||
.config = NULL
|
|
||||||
};
|
};
|
||||||
|
|
||||||
const device_t xtide_acculogic_device = {
|
const device_t xtide_acculogic_device = {
|
||||||
|
@@ -89,9 +89,7 @@ extern const device_t xta_wdxt150_device; /* xta_wdxt150 */
|
|||||||
extern const device_t xta_hd20_device; /* EuroPC internal */
|
extern const device_t xta_hd20_device; /* EuroPC internal */
|
||||||
|
|
||||||
extern const device_t xtide_device; /* xtide_xt */
|
extern const device_t xtide_device; /* xtide_xt */
|
||||||
extern const device_t xtide_plus_device; /* xtide_xt_plus */
|
|
||||||
extern const device_t xtide_at_device; /* xtide_at */
|
extern const device_t xtide_at_device; /* xtide_at */
|
||||||
extern const device_t xtide_at_386_device; /* xtide_at_386 */
|
|
||||||
extern const device_t xtide_acculogic_device; /* xtide_ps2 */
|
extern const device_t xtide_acculogic_device; /* xtide_ps2 */
|
||||||
extern const device_t xtide_at_ps2_device; /* xtide_at_ps2 */
|
extern const device_t xtide_at_ps2_device; /* xtide_at_ps2 */
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user