Add the Dell System 333s/L.

This commit is contained in:
OBattler
2025-05-28 19:41:27 +02:00
parent e9c7795c7a
commit 9ebcc44350
9 changed files with 152 additions and 11 deletions

View File

@@ -1079,7 +1079,14 @@ write_cmd_generic(void *priv, uint8_t val)
/* The SMM handlers of Intel AMI Pentium BIOS'es expect bit 6 to be set. */
if ((kbc_ven == KBC_VEN_AMI) && ((dev->flags & KBC_TYPE_MASK) == KBC_TYPE_GREEN))
fixed_bits |= 0x40;
if (kbc_ven == KBC_VEN_IBM_PS1) {
if (!strcmp(machine_get_internal_name(), "dells333sl")) {
/*
Dell System 333s/L:
- Bit 5: Stuck in reboot loop if clear.
*/
uint8_t p1 = 0x20 | (video_is_mda() ? 0x40 : 0x00);
kbc_delay_to_ob(dev, p1, 0, 0x00);
} else if (kbc_ven == KBC_VEN_IBM_PS1) {
current_drive = fdc_get_current_drive();
/* (B0 or F0) | (fdd_is_525(current_drive) on bit 6) */
kbc_delay_to_ob(dev, dev->p1 | fixed_bits | (fdd_is_525(current_drive) ? 0x40 : 0x00),
@@ -1114,7 +1121,7 @@ write_cmd_generic(void *priv, uint8_t val)
Dell 466/NP:
- Bit 2: Keyboard fuse (must be set);
- Bit 4: Password disable jumper (must be clear);
- Bit 5: Manufacturing jumper (must be set);
- Bit 5: Manufacturing jumper (must be set).
*/
uint8_t p1 = 0x24;
kbc_delay_to_ob(dev, p1, 0, 0x00);
@@ -1123,7 +1130,7 @@ write_cmd_generic(void *priv, uint8_t val)
Dell OptiPlex GXL/GXM:
- Bit 3: Password disable jumper (must be clear);
- Bit 4: Keyboard fuse (must be set);
- Bit 5: Manufacturing jumper (must be set);
- Bit 5: Manufacturing jumper (must be set).
*/
uint8_t p1 = 0x30;
kbc_delay_to_ob(dev, p1, 0, 0x00);

View File

@@ -100,7 +100,8 @@ postcard_setui(void)
break;
}
} else if (strstr(machines[machine].name, " Dell ") &&
(machine_get_chipset(machine) >= MACHINE_CHIPSET_INTEL_430FX)) {
((machine_get_chipset(machine) >= MACHINE_CHIPSET_INTEL_430FX) ||
(machine_get_chipset(machine) >= MACHINE_CHIPSET_VLSI_SCAMP))) {
char dell_diags[10] = { 0 };
if (!postcard_written[1])
@@ -225,8 +226,9 @@ postcard_init(UNUSED(const device_t *info))
NULL, NULL, NULL, postcard_write, NULL, NULL, NULL);
if (strstr(machines[machine].name, " Dell ") &&
(machine_get_chipset(machine) >= MACHINE_CHIPSET_INTEL_430FX))
io_sethandler(0x00e0, 0x0001,
((machine_get_chipset(machine) >= MACHINE_CHIPSET_INTEL_430FX) ||
(machine_get_chipset(machine) >= MACHINE_CHIPSET_VLSI_SCAMP)))
io_sethandler(is486 ? 0x00e0 : 0x00e4, 0x0001,
NULL, NULL, NULL, NULL, NULL, postcard_writel, NULL);
return postcard_write;