From 2123f7d8f3473c0a84fcd38dc4997693d8b7403d Mon Sep 17 00:00:00 2001 From: Verloren50000 <110334428+Verloren50000@users.noreply.github.com> Date: Fri, 12 Sep 2025 18:55:31 +0800 Subject: [PATCH 1/9] Add Packard Bell Tacoma machine definition. --- src/include/86box/machine.h | 1 + 1 file changed, 1 insertion(+) diff --git a/src/include/86box/machine.h b/src/include/86box/machine.h index 6de1586dc..b77768e0b 100644 --- a/src/include/86box/machine.h +++ b/src/include/86box/machine.h @@ -1134,6 +1134,7 @@ extern int machine_at_p2bls_init(const machine_t *); extern int machine_at_p3bf_init(const machine_t *); extern int machine_at_686bx_init(const machine_t *); extern int machine_at_lgibmx7g_init(const machine_t *); +extern int machine_at_tacoma_init(const machine_t *); extern int machine_at_p6sba_init(const machine_t *); extern int machine_at_s1846_init(const machine_t *); From c8b705efac525e592eb029b4fe68ae98adf9991d Mon Sep 17 00:00:00 2001 From: Verloren50000 <110334428+Verloren50000@users.noreply.github.com> Date: Fri, 12 Sep 2025 19:02:38 +0800 Subject: [PATCH 2/9] Add Packard Bell Tacoma machine code. --- src/machine/m_at_slot1.c | 42 ++++++++++++++++++++++++++++++---------- 1 file changed, 32 insertions(+), 10 deletions(-) diff --git a/src/machine/m_at_slot1.c b/src/machine/m_at_slot1.c index 12fd9861f..b34b55517 100644 --- a/src/machine/m_at_slot1.c +++ b/src/machine/m_at_slot1.c @@ -519,17 +519,9 @@ machine_at_686bx_init(const machine_t *model) return ret; } -int -machine_at_lgibmx7g_init(const machine_t *model) +static void +machine_at_lgibmx7g_common_init(const machine_t *model) { - int ret; - - ret = bios_load_linear("roms/machines/lgibmx7g/ms6119.331", - 0x000c0000, 262144, 0); - - if (bios_only || !ret) - return ret; - machine_at_common_init_ex(model, 2); pci_init(PCI_CONFIG_TYPE_1); @@ -545,6 +537,36 @@ machine_at_lgibmx7g_init(const machine_t *model) device_add_params(&w83977_device, (void *) (W83977TF | W83977_AMI | W83977_NO_NVR)); device_add(&winbond_flash_w29c020_device); spd_register(SPD_TYPE_SDRAM, 0x7, 256); +} + +int +machine_at_lgibmx7g_init(const machine_t *model) +{ + int ret; + + ret = bios_load_linear("roms/machines/lgibmx7g/ms6119.331", + 0x000c0000, 262144, 0); + + if (bios_only || !ret) + return ret; + + machine_at_lgibmx7g_common_init(model); + + return ret; +} + +int +machine_at_tacoma_init(const machine_t *model) +{ + int ret; + + ret = bios_load_linear("roms/machines/tacoma/A19P2190.ROM", + 0x000c0000, 262144, 0); + + if (bios_only || !ret) + return ret; + + machine_at_lgibmx7g_common_init(model); return ret; } From 0c7906b00711a4f94c67b1b02d28bdc6917ce7c7 Mon Sep 17 00:00:00 2001 From: Verloren50000 <110334428+Verloren50000@users.noreply.github.com> Date: Fri, 12 Sep 2025 19:07:44 +0800 Subject: [PATCH 3/9] Add Packard Bell Tacoma machine table entry. --- src/machine/machine_table.c | 44 +++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) diff --git a/src/machine/machine_table.c b/src/machine/machine_table.c index f47c43c35..c7cf4cec6 100644 --- a/src/machine/machine_table.c +++ b/src/machine/machine_table.c @@ -17723,6 +17723,50 @@ const machine_t machines[] = { .snd_device = NULL, .net_device = NULL }, + /* Has a Winbond W83977TF Super I/O chip with on-chip KBC with AMIKey-2 (updated 'H') KBC firmware. */ + { + .name = "[i440BX] Packard Bell Tacoma (MSI MS-6119)", + .internal_name = "tacoma", + .type = MACHINE_TYPE_SLOT1, + .chipset = MACHINE_CHIPSET_INTEL_440BX, + .init = machine_at_tacoma_init, + .p1_handler = machine_generic_p1_handler, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SLOT1, + .block = CPU_BLOCK_NONE, + .min_bus = 66666667, + .max_bus = 100000000, + .min_voltage = 1800, + .max_voltage = 3500, + .min_multi = 1.5, + .max_multi = 8.0 + }, + .bus_flags = MACHINE_PS2_AGP | MACHINE_BUS_USB, + .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_ACPI | MACHINE_USB, + .ram = { + .min = 8192, + .max = 786432, + .step = 8192 + }, + .nvrmask = 255, + .jumpered_ecp_dma = 0, + .default_jumpered_ecp_dma = -1, + .kbc_device = NULL, + .kbc_params = 0x00000000, + .kbc_p1 = 0x00000cf0, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = NULL, + .kbd_device = NULL, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = NULL, + .snd_device = NULL, + .net_device = NULL + }, /* Has a Winbond W83977TF Super I/O chip with on-chip KBC with AMIKey-2 KBC firmware. */ { From b514a72bd6c68849624fcb2b8c58673c23f0891e Mon Sep 17 00:00:00 2001 From: Verloren50000 <110334428+Verloren50000@users.noreply.github.com> Date: Sat, 13 Sep 2025 08:24:56 +0800 Subject: [PATCH 4/9] machine.h: lgibmx76 & tacoma --> ms6119 --- src/include/86box/machine.h | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/include/86box/machine.h b/src/include/86box/machine.h index b77768e0b..d28bd7dd7 100644 --- a/src/include/86box/machine.h +++ b/src/include/86box/machine.h @@ -1133,8 +1133,7 @@ extern int machine_at_ax6bc_init(const machine_t *); extern int machine_at_p2bls_init(const machine_t *); extern int machine_at_p3bf_init(const machine_t *); extern int machine_at_686bx_init(const machine_t *); -extern int machine_at_lgibmx7g_init(const machine_t *); -extern int machine_at_tacoma_init(const machine_t *); +extern int machine_at_ms6119_init(const machine_t *); extern int machine_at_p6sba_init(const machine_t *); extern int machine_at_s1846_init(const machine_t *); From 9d28ebe9aa3698b9f01275a935db82c5021f6154 Mon Sep 17 00:00:00 2001 From: Verloren50000 <110334428+Verloren50000@users.noreply.github.com> Date: Sat, 13 Sep 2025 08:32:44 +0800 Subject: [PATCH 5/9] machine_table.c: lgibmx76 & tacoma --> ms6119 --- src/machine/machine_table.c | 52 +++---------------------------------- 1 file changed, 4 insertions(+), 48 deletions(-) diff --git a/src/machine/machine_table.c b/src/machine/machine_table.c index c7cf4cec6..9e590b7f9 100644 --- a/src/machine/machine_table.c +++ b/src/machine/machine_table.c @@ -17681,11 +17681,11 @@ const machine_t machines[] = { }, /* Has a Winbond W83977TF Super I/O chip with on-chip KBC with AMIKey-2 (updated 'H') KBC firmware. */ { - .name = "[i440BX] LG IBM Multinet i x7G (MSI MS-6119)", - .internal_name = "lgibmx7g", + .name = "[i440BX] MSI MS-6119", + .internal_name = "ms6119", .type = MACHINE_TYPE_SLOT1, .chipset = MACHINE_CHIPSET_INTEL_440BX, - .init = machine_at_lgibmx7g_init, + .init = machine_at_ms6119_init, .p1_handler = machine_generic_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, @@ -17715,51 +17715,7 @@ const machine_t machines[] = { .kbc_p1 = 0x00000cf0, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, - .device = NULL, - .kbd_device = NULL, - .fdc_device = NULL, - .sio_device = NULL, - .vid_device = NULL, - .snd_device = NULL, - .net_device = NULL - }, - /* Has a Winbond W83977TF Super I/O chip with on-chip KBC with AMIKey-2 (updated 'H') KBC firmware. */ - { - .name = "[i440BX] Packard Bell Tacoma (MSI MS-6119)", - .internal_name = "tacoma", - .type = MACHINE_TYPE_SLOT1, - .chipset = MACHINE_CHIPSET_INTEL_440BX, - .init = machine_at_tacoma_init, - .p1_handler = machine_generic_p1_handler, - .gpio_handler = NULL, - .available_flag = MACHINE_AVAILABLE, - .gpio_acpi_handler = NULL, - .cpu = { - .package = CPU_PKG_SLOT1, - .block = CPU_BLOCK_NONE, - .min_bus = 66666667, - .max_bus = 100000000, - .min_voltage = 1800, - .max_voltage = 3500, - .min_multi = 1.5, - .max_multi = 8.0 - }, - .bus_flags = MACHINE_PS2_AGP | MACHINE_BUS_USB, - .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_ACPI | MACHINE_USB, - .ram = { - .min = 8192, - .max = 786432, - .step = 8192 - }, - .nvrmask = 255, - .jumpered_ecp_dma = 0, - .default_jumpered_ecp_dma = -1, - .kbc_device = NULL, - .kbc_params = 0x00000000, - .kbc_p1 = 0x00000cf0, - .gpio = 0xffffffff, - .gpio_acpi = 0xffffffff, - .device = NULL, + .device = &ms6119_device, .kbd_device = NULL, .fdc_device = NULL, .sio_device = NULL, From 20e25aa71802d3bb9016ecc50504e2a0e0aca064 Mon Sep 17 00:00:00 2001 From: Verloren50000 <110334428+Verloren50000@users.noreply.github.com> Date: Sat, 13 Sep 2025 08:48:00 +0800 Subject: [PATCH 6/9] Configuration is complete for MSI MS-6119. --- src/include/86box/machine.h | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/include/86box/machine.h b/src/include/86box/machine.h index d28bd7dd7..7ec27dcdc 100644 --- a/src/include/86box/machine.h +++ b/src/include/86box/machine.h @@ -1133,6 +1133,9 @@ extern int machine_at_ax6bc_init(const machine_t *); extern int machine_at_p2bls_init(const machine_t *); extern int machine_at_p3bf_init(const machine_t *); extern int machine_at_686bx_init(const machine_t *); +#ifdef EMU_DEVICE_H +extern const device_t ms6119_device; +#endif extern int machine_at_ms6119_init(const machine_t *); extern int machine_at_p6sba_init(const machine_t *); extern int machine_at_s1846_init(const machine_t *); From 30d5443247f0513f7c809edcf23530ae80baab10 Mon Sep 17 00:00:00 2001 From: Verloren50000 <110334428+Verloren50000@users.noreply.github.com> Date: Sat, 13 Sep 2025 09:12:53 +0800 Subject: [PATCH 7/9] m_at_slot1.c: MSI MS-6119 BIOS Selector Complete --- src/machine/m_at_slot1.c | 88 ++++++++++++++++++++++++---------------- 1 file changed, 54 insertions(+), 34 deletions(-) diff --git a/src/machine/m_at_slot1.c b/src/machine/m_at_slot1.c index b34b55517..eec0dd8a8 100644 --- a/src/machine/m_at_slot1.c +++ b/src/machine/m_at_slot1.c @@ -519,9 +519,61 @@ machine_at_686bx_init(const machine_t *model) return ret; } -static void -machine_at_lgibmx7g_common_init(const machine_t *model) +static const device_config_t ms6119_config[] = { + // clang-format off + { + .name = "bios", + .description = "BIOS Version", + .type = CONFIG_BIOS, + .default_string = "ms6119", + .default_int = 0, + .file_filter = "", + .spinner = { 0 }, + .bios = { + { .name = "Award Modular BIOS v4.51PG - Version 3.30b1 (LG IBM Multinet i x7G)", .internal_name = "lgibmx7g", .bios_type = BIOS_NORMAL, + .files_no = 1, .local = 0, .size = 262144, .files = { "roms/machines/ms6119/ms6119.331", "" } }, + { .name = "Award Modular BIOS v4.51PG - Version 2.12 (Viglen Vig69M)", .internal_name = "vig69m", .bios_type = BIOS_NORMAL, + .files_no = 1, .local = 0, .size = 262144, .files = { "roms/machines/ms6119/vig69m.212", "" } }, + { .name = "Award Modular BIOS v4.51PG - Version 2.10", .internal_name = "ms6119", .bios_type = BIOS_NORMAL, + .files_no = 1, .local = 0, .size = 262144, .files = { "roms/machines/ms6119/w6119ims.2a0", "" } }, + { .name = "AMIBIOS 071595 - Version 1.90 (Packard Bell Tacoma)", .internal_name = "ms6119", .bios_type = BIOS_NORMAL, + .files_no = 1, .local = 0, .size = 262144, .files = { "roms/machines/ms6119/A19P2190.ROM", "" } }, + { .files_no = 0 } + }, + }, + { .name = "", .description = "", .type = CONFIG_END } + // clang-format on +}; + +const device_t ms6119_device = { + .name = "MSI MS-6119", + .internal_name = "ms6119_device", + .flags = 0, + .local = 0, + .init = NULL, + .close = NULL, + .reset = NULL, + .available = NULL, + .speed_changed = NULL, + .force_redraw = NULL, + .config = ms6119_config +}; + +int +machine_at_ms6119_init(const machine_t *model) { + int ret = 0; + const char* fn; + + /* No ROMs available */ + if (!device_available(model->device)) + return ret; + + device_context(model->device); + fn = device_get_bios_file(machine_get_device(machine), device_get_config_bios("bios"), 0); + ret = bios_load_linear(fn, 0x000c0000, 262144, 0); + device_context_restore(); + machine_at_common_init_ex(model, 2); pci_init(PCI_CONFIG_TYPE_1); @@ -539,38 +591,6 @@ machine_at_lgibmx7g_common_init(const machine_t *model) spd_register(SPD_TYPE_SDRAM, 0x7, 256); } -int -machine_at_lgibmx7g_init(const machine_t *model) -{ - int ret; - - ret = bios_load_linear("roms/machines/lgibmx7g/ms6119.331", - 0x000c0000, 262144, 0); - - if (bios_only || !ret) - return ret; - - machine_at_lgibmx7g_common_init(model); - - return ret; -} - -int -machine_at_tacoma_init(const machine_t *model) -{ - int ret; - - ret = bios_load_linear("roms/machines/tacoma/A19P2190.ROM", - 0x000c0000, 262144, 0); - - if (bios_only || !ret) - return ret; - - machine_at_lgibmx7g_common_init(model); - - return ret; -} - int machine_at_p6sba_init(const machine_t *model) { From 5a35c984e77215873ca4a1d872ba23176f8c74bf Mon Sep 17 00:00:00 2001 From: Verloren50000 <110334428+Verloren50000@users.noreply.github.com> Date: Sat, 13 Sep 2025 09:29:25 +0800 Subject: [PATCH 8/9] m_at_slot1.c: MSI MS-6119 BIOS Selector Complete Once Again --- src/machine/m_at_slot1.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/machine/m_at_slot1.c b/src/machine/m_at_slot1.c index eec0dd8a8..1abdd62a9 100644 --- a/src/machine/m_at_slot1.c +++ b/src/machine/m_at_slot1.c @@ -589,6 +589,8 @@ machine_at_ms6119_init(const machine_t *model) device_add_params(&w83977_device, (void *) (W83977TF | W83977_AMI | W83977_NO_NVR)); device_add(&winbond_flash_w29c020_device); spd_register(SPD_TYPE_SDRAM, 0x7, 256); + + return ret; } int From 3bdedd896fee9a2c3bedf0e01881741f43e204cb Mon Sep 17 00:00:00 2001 From: Verloren50000 <110334428+Verloren50000@users.noreply.github.com> Date: Sat, 13 Sep 2025 09:32:02 +0800 Subject: [PATCH 9/9] m_at_slot1.c: ms6119 -> tacoma (Congratulations, MSI-MS 6119 BIOS Selector complete) --- src/machine/m_at_slot1.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/machine/m_at_slot1.c b/src/machine/m_at_slot1.c index 1abdd62a9..a172c9396 100644 --- a/src/machine/m_at_slot1.c +++ b/src/machine/m_at_slot1.c @@ -536,7 +536,7 @@ static const device_config_t ms6119_config[] = { .files_no = 1, .local = 0, .size = 262144, .files = { "roms/machines/ms6119/vig69m.212", "" } }, { .name = "Award Modular BIOS v4.51PG - Version 2.10", .internal_name = "ms6119", .bios_type = BIOS_NORMAL, .files_no = 1, .local = 0, .size = 262144, .files = { "roms/machines/ms6119/w6119ims.2a0", "" } }, - { .name = "AMIBIOS 071595 - Version 1.90 (Packard Bell Tacoma)", .internal_name = "ms6119", .bios_type = BIOS_NORMAL, + { .name = "AMIBIOS 071595 - Version 1.90 (Packard Bell Tacoma)", .internal_name = "tacoma", .bios_type = BIOS_NORMAL, .files_no = 1, .local = 0, .size = 262144, .files = { "roms/machines/ms6119/A19P2190.ROM", "" } }, { .files_no = 0 } },