Machine mergers and added the Olivetti PCS 44/C.

This commit is contained in:
OBattler
2025-08-26 18:00:25 +02:00
parent 5180646dfd
commit a3f5ea358f
16 changed files with 958 additions and 1430 deletions

View File

@@ -140,6 +140,46 @@ machine_at_p65up5_cp55t2d_init(const machine_t *model)
return ret;
}
static const device_config_t cu430hx_config[] = {
// clang-format off
{
.name = "bios",
.description = "BIOS Version",
.type = CONFIG_BIOS,
.default_string = "cu430hx",
.default_int = 0,
.file_filter = "",
.spinner = { 0 },
.bios = {
{ .name = "Intel CU430HX (Cumberland)", .internal_name = "cu430hx", .bios_type = BIOS_NORMAL,
.files_no = 5, .local = 0, .size = 262144, .files = { "roms/machines/cu430hx/1006DK0_.BIO", "roms/machines/cu430hx/1006DK0_.BI1",
"roms/machines/cu430hx/1006DK0_.BI2", "roms/machines/cu430hx/1006DK0_.BI3",
"roms/machines/cu430hx/1006DK0_.RCV", "" } },
{ .name = "Toshiba Equium 5200D", .internal_name = "equium5200", .bios_type = BIOS_NORMAL,
.files_no = 5, .local = 0, .size = 262144, .files = { "roms/machines/cu430hx/1003DK08.BIO", "roms/machines/cu430hx/1003DK08.BI1",
"roms/machines/cu430hx/1003DK08.BI2", "roms/machines/cu430hx/1003DK08.BI3",
"roms/machines/cu430hx/1003DK08.RCV", "" } },
{ .files_no = 0 }
},
},
{ .name = "", .description = "", .type = CONFIG_END }
// clang-format on
};
const device_t cu430hx_device = {
.name = "Intel CU430HX (Cumberland)",
.internal_name = "cu430hx_device",
.flags = 0,
.local = 0,
.init = NULL,
.close = NULL,
.reset = NULL,
.available = NULL,
.speed_changed = NULL,
.force_redraw = NULL,
.config = cu430hx_config
};
static void
machine_at_cu430hx_gpio_init(void)
{
@@ -171,9 +211,22 @@ machine_at_cu430hx_gpio_init(void)
machine_set_gpio_default(gpio);
}
static void
machine_at_cu430hx_common_init(const machine_t *model)
int
machine_at_cu430hx_init(const machine_t *model)
{
int ret = 0;
const char* fn[5];
/* No ROMs available */
if (!device_available(model->device))
return ret;
device_context(model->device);
for (int i = 0; i < 5; i++)
fn[i] = device_get_bios_file(machine_get_device(machine), device_get_config_bios("bios"), i);
ret = bios_load_linear_combined2(fn[0], fn[1], fn[2], fn[3], fn[4], 0x3a000, 128);
device_context_restore();
machine_at_common_init_ex(model, 2);
machine_at_cu430hx_gpio_init();
@@ -194,28 +247,50 @@ machine_at_cu430hx_common_init(const machine_t *model)
device_add(&piix3_device);
device_add_params(&pc87306_device, (void *) PCX730X_AMI);
device_add(&intel_flash_bxt_ami_device);
}
int
machine_at_cu430hx_init(const machine_t *model)
{
int ret;
ret = bios_load_linear_combined2("roms/machines/cu430hx/1006DK0_.BIO",
"roms/machines/cu430hx/1006DK0_.BI1",
"roms/machines/cu430hx/1006DK0_.BI2",
"roms/machines/cu430hx/1006DK0_.BI3",
"roms/machines/cu430hx/1006DK0_.RCV",
0x3a000, 128);
if (bios_only || !ret)
return ret;
machine_at_cu430hx_common_init(model);
return ret;
}
static const device_config_t tc430hx_config[] = {
// clang-format off
{
.name = "bios",
.description = "BIOS Version",
.type = CONFIG_BIOS,
.default_string = "tc430hx",
.default_int = 0,
.file_filter = "",
.spinner = { 0 },
.bios = {
{ .name = "Intel TC430HX (Tucson)", .internal_name = "tc430hx", .bios_type = BIOS_NORMAL,
.files_no = 5, .local = 0, .size = 262144, .files = { "roms/machines/tc430hx/1007DH0_.BIO", "roms/machines/tc430hx/1007DH0_.BI1",
"roms/machines/tc430hx/1007DH0_.BI2", "roms/machines/tc430hx/1007DH0_.BI3",
"roms/machines/tc430hx/1007DH0_.RCV", "" } },
{ .name = "Toshiba Infinia 7201", .internal_name = "infinia7200", .bios_type = BIOS_NORMAL,
.files_no = 5, .local = 0, .size = 262144, .files = { "roms/machines/tc430hx/1008DH08.BIO", "roms/machines/tc430hx/1008DH08.BI1",
"roms/machines/tc430hx/1008DH08.BI2", "roms/machines/tc430hx/1008DH08.BI3",
"roms/machines/tc430hx/1008DH08.RCV", "" } },
{ .files_no = 0 }
},
},
{ .name = "", .description = "", .type = CONFIG_END }
// clang-format on
};
const device_t tc430hx_device = {
.name = "Intel TC430HX (Tucson)",
.internal_name = "tc430hx_device",
.flags = 0,
.local = 0,
.init = NULL,
.close = NULL,
.reset = NULL,
.available = NULL,
.speed_changed = NULL,
.force_redraw = NULL,
.config = tc430hx_config
};
static void
machine_at_tc430hx_gpio_init(void)
{
@@ -247,18 +322,19 @@ machine_at_tc430hx_gpio_init(void)
int
machine_at_tc430hx_init(const machine_t *model)
{
int ret;
int ret = 0;
const char* fn[5];
ret = bios_load_linear_combined2("roms/machines/tc430hx/1007DH0_.BIO",
"roms/machines/tc430hx/1007DH0_.BI1",
"roms/machines/tc430hx/1007DH0_.BI2",
"roms/machines/tc430hx/1007DH0_.BI3",
"roms/machines/tc430hx/1007DH0_.RCV",
0x3a000, 128);
if (bios_only || !ret)
/* No ROMs available */
if (!device_available(model->device))
return ret;
device_context(model->device);
for (int i = 0; i < 5; i++)
fn[i] = device_get_bios_file(machine_get_device(machine), device_get_config_bios("bios"), i);
ret = bios_load_linear_combined2(fn[0], fn[1], fn[2], fn[3], fn[4], 0x3a000, 128);
device_context_restore();
machine_at_common_init_ex(model, 2);
machine_at_tc430hx_gpio_init();
@@ -407,64 +483,6 @@ machine_at_p55t2s_init(const machine_t *model)
return ret;
}
int
machine_at_equium5200_init(const machine_t *model)
{
int ret;
ret = bios_load_linear_combined2("roms/machines/equium5200/1003DK08.BIO",
"roms/machines/equium5200/1003DK08.BI1",
"roms/machines/equium5200/1003DK08.BI2",
"roms/machines/equium5200/1003DK08.BI3",
"roms/machines/equium5200/1003DK08.RCV",
0x3a000, 128);
if (bios_only || !ret)
return ret;
machine_at_cu430hx_common_init(model);
return ret;
}
int
machine_at_infinia7200_init(const machine_t *model)
{
int ret;
ret = bios_load_linear_combined2("roms/machines/infinia7200/1008DH08.BIO",
"roms/machines/infinia7200/1008DH08.BI1",
"roms/machines/infinia7200/1008DH08.BI2",
"roms/machines/infinia7200/1008DH08.BI3",
"roms/machines/infinia7200/1008DH08.RCV",
0x3a000, 128);
if (bios_only || !ret)
return ret;
machine_at_common_init_ex(model, 2);
machine_at_tc430hx_gpio_init();
pci_init(PCI_CONFIG_TYPE_1);
pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0);
pci_register_slot(0x08, PCI_CARD_VIDEO, 4, 0, 0, 0);
pci_register_slot(0x0D, PCI_CARD_NORMAL, 1, 2, 3, 4);
pci_register_slot(0x0E, PCI_CARD_NORMAL, 2, 3, 4, 1);
pci_register_slot(0x0F, PCI_CARD_NORMAL, 3, 4, 1, 2);
pci_register_slot(0x10, PCI_CARD_NORMAL, 4, 1, 2, 3);
pci_register_slot(0x07, PCI_CARD_SOUTHBRIDGE, 0, 0, 0, 0);
if (gfxcard[0] == VID_INTERNAL)
device_add(machine_get_vid_device(machine));
device_add(&i430hx_device);
device_add(&piix3_device);
device_add_params(&pc87306_device, (void *) PCX730X_AMI);
device_add(&intel_flash_bxt_ami_device);
return ret;
}
/* i430VX */
int
machine_at_ap5vm_init(const machine_t *model)