Added the Dell 466/NP, closes #3585.

This commit is contained in:
OBattler
2025-05-18 05:59:13 +02:00
parent 20b2b1c901
commit d6231de1bc
5 changed files with 97 additions and 26 deletions

View File

@@ -532,6 +532,8 @@ extern int machine_at_cs4031_init(const machine_t *);
extern int machine_at_pb410a_init(const machine_t *);
extern int machine_at_decpclpv_init(const machine_t *);
extern int machine_at_dell466np_init(const machine_t *);
extern int machine_at_acerv10_init(const machine_t *);
extern int machine_at_acera1g_init(const machine_t *);

View File

@@ -365,6 +365,7 @@ extern const device_t gd5428_boca_isa_device;
extern const device_t gd5428_mca_device;
extern const device_t gd5426_mca_device;
extern const device_t gd5428_onboard_device;
extern const device_t gd5428_onboard_vlb_device;
extern const device_t gd5429_isa_device;
extern const device_t gd5429_vlb_device;
extern const device_t gd5430_diamond_speedstar_pro_se_a8_vlb_device;

View File

@@ -545,16 +545,47 @@ machine_at_decpclpv_init(const machine_t *model)
device_add(&sis_85c461_device);
if (gfxcard[0] == VID_INTERNAL)
device_add(&s3_86c805_onboard_vlb_device);
device_add(machine_get_vid_device(machine));
device_add(&keyboard_ps2_phoenix_pci_device);
/* TODO: Phoenix MultiKey KBC */
device_add(&keyboard_ps2_ami_pci_device);
device_add(&ide_isa_2ch_device);
device_add(&fdc37c663_ide_device);
return ret;
}
int
machine_at_dell466np_init(const machine_t *model)
{
int ret;
ret = bios_load_linear("roms/machines/dell466np/466np.bin",
0x000c0000, 262144, 0);
if (bios_only || !ret)
return ret;
machine_at_common_init(model);
device_add(&sis_85c461_device);
if (gfxcard[0] == VID_INTERNAL)
device_add(machine_get_vid_device(machine));
else {
for (uint16_t i = 0; i < 32768; i++)
rom[i] = mem_readb_phys(0x000c0000 + i);
}
mem_mapping_set_addr(&bios_mapping, 0x0c0000, 0x40000);
mem_mapping_set_exec(&bios_mapping, rom);
device_add(&keyboard_ps2_phoenix_pci_device);
device_add(&ide_isa_device);
device_add(&fdc37c661_ide_device);
return ret;
}
static void
machine_at_ali1429_common_init(const machine_t *model, int is_green)
{

View File

@@ -6934,6 +6934,46 @@ const machine_t machines[] = {
.snd_device = NULL,
.net_device = NULL
},
/* Uses a ???? KBC. */
{
.name = "[SiS 461] Dell 466/NP",
.internal_name = "dell466np",
.type = MACHINE_TYPE_486_S2,
.chipset = MACHINE_CHIPSET_SIS_461,
.init = machine_at_dell466np_init,
.p1_handler = NULL,
.gpio_handler = NULL,
.available_flag = MACHINE_AVAILABLE,
.gpio_acpi_handler = NULL,
.cpu = {
.package = CPU_PKG_SOCKET3,
.block = CPU_BLOCK_NONE,
.min_bus = 0,
.max_bus = 0,
.min_voltage = 0,
.max_voltage = 0,
.min_multi = 0,
.max_multi = 0
},
.bus_flags = MACHINE_PS2,
.flags = MACHINE_IDE | MACHINE_VIDEO | MACHINE_APM,
.ram = {
.min = 1024,
.max = 32768,
.step = 1024
},
.nvrmask = 127,
.kbc_device = NULL,
.kbc_p1 = 0xff,
.gpio = 0xffffffff,
.gpio_acpi = 0xffffffff,
.device = NULL,
.fdc_device = NULL,
.sio_device = NULL,
.vid_device = &gd5428_onboard_vlb_device,
.snd_device = NULL,
.net_device = NULL
},
/* The BIOS does not send any non-standard keyboard controller commands and wants
a PS/2 mouse, so it's an IBM PS/2 KBC (Type 1) firmware. */
{

View File

@@ -4273,7 +4273,10 @@ gd54xx_init(const device_t *info)
break;
case CIRRUS_ID_CLGD5428:
if (info->local & 0x100)
if (info->local & 0x200) {
romfn = NULL;
gd54xx->has_bios = 0;
} else if (info->local & 0x100)
if (gd54xx->vlb)
romfn = BIOS_GD5428_DIAMOND_B1_VLB_PATH;
else {
@@ -4750,26 +4753,6 @@ static const device_config_t gd5426_config[] = {
{ .name = "", .description = "", .type = CONFIG_END }
};
static const device_config_t gd5428_onboard_config[] = {
{
.name = "memory",
.description = "Memory size",
.type = CONFIG_SELECTION,
.default_string = NULL,
.default_int = 2048,
.file_filter = NULL,
.spinner = { 0 },
.selection = {
{ .description = "512 KB", .value = 512 },
{ .description = "1 MB", .value = 1024 },
{ .description = "2 MB", .value = 2048 },
{ .description = "" }
},
.bios = { { 0 } }
},
{ .name = "", .description = "", .type = CONFIG_END }
};
static const device_config_t gd5429_config[] = {
{
.name = "memory",
@@ -5176,7 +5159,7 @@ const device_t gd5428_onboard_device = {
.available = gd5428_isa_available,
.speed_changed = gd54xx_speed_changed,
.force_redraw = gd54xx_force_redraw,
.config = gd5428_onboard_config
.config = gd5426_config
};
const device_t gd5428_vlb_onboard_device = {
@@ -5190,7 +5173,21 @@ const device_t gd5428_vlb_onboard_device = {
.available = NULL,
.speed_changed = gd54xx_speed_changed,
.force_redraw = gd54xx_force_redraw,
.config = gd5428_onboard_config
.config = gd5426_config
};
const device_t gd5428_onboard_vlb_device = {
.name = "Cirrus Logic GD5428 (VLB) (On-Board) (Dell)",
.internal_name = "cl_gd5428_onboard_vlb",
.flags = DEVICE_VLB,
.local = CIRRUS_ID_CLGD5428 | 0x200,
.init = gd54xx_init,
.close = gd54xx_close,
.reset = gd54xx_reset,
.available = NULL,
.speed_changed = gd54xx_speed_changed,
.force_redraw = gd54xx_force_redraw,
.config = gd542x_config
};
const device_t gd5429_isa_device = {