From 851db09abbf6dff473e5962b788c0d327a324fe2 Mon Sep 17 00:00:00 2001 From: OBattler Date: Fri, 19 Dec 2025 22:04:55 +0100 Subject: [PATCH 1/4] ABIT AB-BX6 - make the EG BIOS default as it was before the QS BIOS was added. --- src/machine/m_at_slot1.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/machine/m_at_slot1.c b/src/machine/m_at_slot1.c index 630231046..d4a4742e5 100644 --- a/src/machine/m_at_slot1.c +++ b/src/machine/m_at_slot1.c @@ -425,7 +425,7 @@ static const device_config_t bx6_config[] = { .bios = { { .name = "Award Modular BIOS v4.51PG - Revision EG", - .internal_name = "bx6_eg", + .internal_name = "bx6", .bios_type = BIOS_NORMAL, .files_no = 1, .local = 0, @@ -434,7 +434,7 @@ static const device_config_t bx6_config[] = { }, { .name = "Award Modular BIOS v4.51PG - Revision QS", - .internal_name = "bx6", + .internal_name = "bx6_qs", .bios_type = BIOS_NORMAL, .files_no = 1, .local = 0, From a99577d2eba3a0cb0396071fcc6b4a1132e4ef13 Mon Sep 17 00:00:00 2001 From: OBattler Date: Fri, 19 Dec 2025 22:30:28 +0100 Subject: [PATCH 2/4] ABit AB-BX6: Force bit 4 of CMOS register 39h to 1, fixes intermittent POST freezes on POST code AAh on later BIOS revisions. --- src/nvr_at.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/nvr_at.c b/src/nvr_at.c index ae7bd8bb4..2e04ddc6f 100644 --- a/src/nvr_at.c +++ b/src/nvr_at.c @@ -635,6 +635,13 @@ nvr_reg_write(uint16_t reg, uint8_t val, void *priv) nvr_reg_common_write(reg, val, nvr, local); break; + case 0x39: + if (machines[machine].init == machine_at_bx6_init) + nvr_reg_common_write(reg, val | 0x08, nvr, local); + else + nvr_reg_common_write(reg, val, nvr, local); + break; + default: /* non-RTC registers are just NVRAM */ nvr_reg_common_write(reg, val, nvr, local); break; @@ -794,6 +801,14 @@ nvr_read(uint16_t addr, void *priv) ret = nvr->regs[local->addr[addr_id]]; break; + case 0x39: + if (!(local->lock[local->addr[addr_id]] & 0x02)) { + ret = nvr->regs[local->addr[addr_id]]; + if (machines[machine].init == machine_at_bx6_init) + ret |= 0x08; + } + break; + case 0x3e: case 0x3f: if (!nvr->is_new && (local->flags & FLAG_AMI_1995_HACK)) { From 854a3af014be983066e3a345d98a044ecda4de80 Mon Sep 17 00:00:00 2001 From: OBattler Date: Fri, 19 Dec 2025 22:51:02 +0100 Subject: [PATCH 3/4] Force bit 0 to 1 as well, fixes AA hang on first POST. --- src/nvr_at.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/nvr_at.c b/src/nvr_at.c index 2e04ddc6f..09ce1e57e 100644 --- a/src/nvr_at.c +++ b/src/nvr_at.c @@ -637,7 +637,7 @@ nvr_reg_write(uint16_t reg, uint8_t val, void *priv) case 0x39: if (machines[machine].init == machine_at_bx6_init) - nvr_reg_common_write(reg, val | 0x08, nvr, local); + nvr_reg_common_write(reg, val | 0x09, nvr, local); else nvr_reg_common_write(reg, val, nvr, local); break; @@ -805,7 +805,7 @@ nvr_read(uint16_t addr, void *priv) if (!(local->lock[local->addr[addr_id]] & 0x02)) { ret = nvr->regs[local->addr[addr_id]]; if (machines[machine].init == machine_at_bx6_init) - ret |= 0x08; + ret |= 0x09; } break; From fddfeb51cae034a6f4d50056747cf41169f85607 Mon Sep 17 00:00:00 2001 From: OBattler Date: Fri, 19 Dec 2025 23:07:24 +0100 Subject: [PATCH 4/4] Improve the fix, now it actually remembers the CPU settings. --- src/nvr_at.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/nvr_at.c b/src/nvr_at.c index 09ce1e57e..38a97560b 100644 --- a/src/nvr_at.c +++ b/src/nvr_at.c @@ -637,7 +637,7 @@ nvr_reg_write(uint16_t reg, uint8_t val, void *priv) case 0x39: if (machines[machine].init == machine_at_bx6_init) - nvr_reg_common_write(reg, val | 0x09, nvr, local); + nvr_reg_common_write(reg, val | 0x08, nvr, local); else nvr_reg_common_write(reg, val, nvr, local); break; @@ -805,7 +805,7 @@ nvr_read(uint16_t addr, void *priv) if (!(local->lock[local->addr[addr_id]] & 0x02)) { ret = nvr->regs[local->addr[addr_id]]; if (machines[machine].init == machine_at_bx6_init) - ret |= 0x09; + ret |= 0x08; } break; @@ -1231,6 +1231,9 @@ nvr_at_init(const device_t *info) if (nvr->is_new && (machines[machine].init == machine_at_spitfire_init)) nvr->regs[0x33] = nvr->regs[0x34] = 0xff; + if (nvr->is_new && (machines[machine].init == machine_at_bx6_init)) + nvr->regs[0x39] = 0x09; + return nvr; }