From 763b61c469713e4f2c09a82b7e56a56ab1f1c558 Mon Sep 17 00:00:00 2001 From: RichardG867 Date: Fri, 24 Jul 2020 15:00:58 -0300 Subject: [PATCH] Add special behavior for a reserved 440BX bus speed bit for the Virtual PC 2007 machine --- src/chipset/intel_4x0.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/chipset/intel_4x0.c b/src/chipset/intel_4x0.c index 3f1449aaa..4a75760aa 100644 --- a/src/chipset/intel_4x0.c +++ b/src/chipset/intel_4x0.c @@ -29,6 +29,7 @@ #include <86box/keyboard.h> #include <86box/chipset.h> #include <86box/spd.h> +#include <86box/machine.h> enum @@ -442,9 +443,11 @@ i4x0_write(int func, int addr, uint8_t val, void *priv) break; case INTEL_440BX: case INTEL_440ZX: regs[0x51] = (regs[0x50] & 0x70) | (val & 0x8f); + if (!strcmp(machines[machine].internal_name, "vpc2007")) + regs[0x51] |= 0x10; /* Virtual PC 2007 BIOS requires a reserved bus speed bit to be set */ break; case INTEL_440GX: - regs[0x51] = (regs[0x50] & 0x88) | (val & 0x08); + regs[0x51] = (regs[0x50] & 0x88) | (val & 0x08); /*regs[0x51] = (regs[0x50] & 0x88) | (val & 0x77);*/ break; } @@ -1551,6 +1554,8 @@ static void regs[0x51] |= 0x20; else if ((cpu_busspeed > 66666667) && (cpu_busspeed <= 100000000)) regs[0x51] |= 0x00; + if (!strcmp(machines[machine].internal_name, "vpc2007")) + regs[0x51] |= 0x10; /* Virtual PC 2007 BIOS requires a reserved bus speed bit to be set */ regs[0x57] = 0x28; /* 4 DIMMs, SDRAM */ regs[0x58] = 0x03; regs[0x60] = regs[0x61] = regs[0x62] = regs[0x63] = regs[0x64] = regs[0x65] = regs[0x66] = regs[0x67] = 0x01;