From 4ea89bb216755b65595f635eecf55d386937f0f9 Mon Sep 17 00:00:00 2001 From: win2kgamer <47463859+win2kgamer@users.noreply.github.com> Date: Sun, 15 Feb 2026 00:58:03 -0600 Subject: [PATCH] Intel Monsoon: Give the machine a version of the Phoenix jumper device, fixes onboard video --- src/device/phoenix_486_jumper.c | 31 ++++++++++++++++++++++++++++++- src/include/86box/chipset.h | 1 + src/machine/m_at_socket2.c | 1 + 3 files changed, 32 insertions(+), 1 deletion(-) diff --git a/src/device/phoenix_486_jumper.c b/src/device/phoenix_486_jumper.c index ed4349082..905af1149 100644 --- a/src/device/phoenix_486_jumper.c +++ b/src/device/phoenix_486_jumper.c @@ -52,11 +52,19 @@ Bit 0 = ???? */ +/* + Intel Monsoon bit meanings: + Bit 4 = Onboard video: 1 = disabled, 0 = enabled + Bit 3 = CMOS Setup enable +*/ + typedef struct phoenix_486_jumper_t { uint8_t type; uint8_t jumper; } phoenix_486_jumper_t; +#define ENABLE_PHOENIX_486_JUMPER_LOG 1 + #ifdef ENABLE_PHOENIX_486_JUMPER_LOG int phoenix_486_jumper_do_log = ENABLE_PHOENIX_486_JUMPER_LOG; @@ -84,6 +92,8 @@ phoenix_486_jumper_write(UNUSED(uint16_t addr), uint8_t val, void *priv) dev->jumper = val & 0xbf; else if (dev->type == 2) /* PB600 */ dev->jumper = ((val & 0xbf) | 0x02); + else if (dev->type == 3) /* Intel Monsoon */ + dev->jumper = val | 0x08; else dev->jumper = val; } @@ -106,7 +116,11 @@ phoenix_486_jumper_reset(void *priv) dev->jumper = 0x00; else if (dev->type == 2) /* PB600 */ dev->jumper = 0x02; - else { + else if (dev->type == 3) { /* Intel Monsoon */ + dev->jumper = 0xef; + if (gfxcard[0] != 0x01) + dev->jumper |= 0x10; + } else { dev->jumper = 0x9f; if (gfxcard[0] != 0x01) dev->jumper |= 0x40; @@ -176,3 +190,18 @@ const device_t phoenix_486_jumper_pci_pb600_device = { .force_redraw = NULL, .config = NULL }; + +const device_t phoenix_486_jumper_monsoon_device = { + .name = "Phoenix 486 Jumper Readout (Monsoon)", + .internal_name = "phoenix_486_jumper_monsoon", + .flags = 0, + .local = 3, + .init = phoenix_486_jumper_init, + .close = phoenix_486_jumper_close, + .reset = phoenix_486_jumper_reset, + .available = NULL, + .speed_changed = NULL, + .force_redraw = NULL, + .config = NULL +}; + diff --git a/src/include/86box/chipset.h b/src/include/86box/chipset.h index 4ded831bd..6fa7881ca 100644 --- a/src/include/86box/chipset.h +++ b/src/include/86box/chipset.h @@ -234,6 +234,7 @@ extern const device_t nec_mate_unk_device; extern const device_t phoenix_486_jumper_device; extern const device_t phoenix_486_jumper_pci_device; extern const device_t phoenix_486_jumper_pci_pb600_device; +extern const device_t phoenix_486_jumper_monsoon_device; extern const device_t ast_readout_device; extern const device_t ast_nvr_device; diff --git a/src/machine/m_at_socket2.c b/src/machine/m_at_socket2.c index 5c4a19f17..5b871d298 100644 --- a/src/machine/m_at_socket2.c +++ b/src/machine/m_at_socket2.c @@ -389,6 +389,7 @@ machine_at_monsoon_init(const machine_t *model) device_add_params(&fdc37c6xx_device, (void *) (FDC37C651 | FDC37C6XX_IDE_PRI)); device_add(&intel_flash_bxt_device); + device_add(&phoenix_486_jumper_monsoon_device); if (gfxcard[0] == VID_INTERNAL) device_add(machine_get_vid_device(machine));