From a690870ada032332c0816330efb2d38aa3b34264 Mon Sep 17 00:00:00 2001 From: toggo9 <121191375+toggo9@users.noreply.github.com> Date: Thu, 29 May 2025 19:50:11 +0200 Subject: [PATCH 1/7] Add SNI D943 machine entry. --- src/machine/m_at_socket7_3v.c | 85 +++++++++++++++++++++++++++++++++++ 1 file changed, 85 insertions(+) diff --git a/src/machine/m_at_socket7_3v.c b/src/machine/m_at_socket7_3v.c index 5b5724e37..ca096c6ad 100644 --- a/src/machine/m_at_socket7_3v.c +++ b/src/machine/m_at_socket7_3v.c @@ -612,6 +612,91 @@ machine_at_8500tuc_init(const machine_t *model) return ret; } +int +machine_at_d943_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_versions"), 0); + ret = bios_load_linear(fn, 0x000e0000, 131072, 0); + device_context_restore(); + + machine_at_common_init_ex(model, 2); + device_add(&amstrad_megapc_nvr_device); + + pci_init(PCI_CONFIG_TYPE_1); + pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0); + pci_register_slot(0x07, PCI_CARD_SOUTHBRIDGE, 0, 0, 0, 0); + pci_register_slot(0x08, PCI_CARD_VIDEO, 4, 0, 0, 0); + pci_register_slot(0x11, PCI_CARD_NORMAL, 3, 2, 4, 1); + pci_register_slot(0x12, PCI_CARD_NORMAL, 2, 1, 3, 4); + pci_register_slot(0x13, PCI_CARD_NORMAL, 1, 3, 2, 4); + device_add(&i430hx_device); + device_add(&piix3_device); + device_add(&keyboard_ps2_pci_device); + device_add(&fdc37c665_device); + device_add(&intel_flash_bxt_device); + spd_register(SPD_TYPE_EDO, 0x7, 256); + + + if (gfxcard[0] == VID_INTERNAL) + device_add(&gd5436_onboard_pci_device); + + if (sound_card_current[0] == SOUND_INTERNAL) + device_add(&sb_vibra16s_onboard_device); + + return ret; +} + +static const device_config_t d943_config[] = { + // clang-format off + { + .name = "bios_versions", + .description = "BIOS Versions", + .type = CONFIG_BIOS, + .default_string = "d943_oct96", + .default_int = 0, + .file_filter = "", + .spinner = { 0 }, /*W1*/ + .bios = { + { .name = "Version 4.05 Revision 1.02.943 (10/28/1996)", .internal_name = "d943_oct96", .bios_type = BIOS_NORMAL, + .files_no = 1, .local = 0, .size = 131072, .files = { "roms/machines/d943/d943_oct96.bin", "" } }, + { .name = "Version 4.05 Revision 1.03.943 (12/12/1996)", .internal_name = "d943_dec96", .bios_type = BIOS_NORMAL, + .files_no = 1, .local = 0, .size = 131072, .files = { "roms/machines/d943/d943_dec96.bin", "" } }, + { .name = "Version 4.05 Revision 1.05.943 (09/04/1997)", .internal_name = "d943_sept97", .bios_type = BIOS_NORMAL, + .files_no = 1, .local = 0, .size = 131072, .files = { "roms/machines/d943/d943_sept97.bin", "" } }, + { .name = "Version 4.05 Revision 1.06.943 (10/29/1997)", .internal_name = "d943_oct97", .bios_type = BIOS_NORMAL, + .files_no = 1, .local = 0, .size = 131072, .files = { "roms/machines/d943/d943_oct97.bin", "" } }, + + }, + }, + { .name = "", .description = "", .type = CONFIG_END } + // clang-format on +}; + + + +const device_t d943_device = { + .name = "Siemens-Nixdorf D943", + .internal_name = "d943", + .flags = 0, + .local = 0, + .init = NULL, + .close = NULL, + .reset = NULL, + .available = NULL, + .speed_changed = NULL, + .force_redraw = NULL, + .config = &d943_config[0] +}; + int machine_at_p55t2s_init(const machine_t *model) { From 657dd522f4053e18a90048386fb791bf8c9df5ac Mon Sep 17 00:00:00 2001 From: toggo9 <121191375+toggo9@users.noreply.github.com> Date: Thu, 29 May 2025 19:52:15 +0200 Subject: [PATCH 2/7] Add SNI D943 machine table entry. --- src/machine/machine_table.c | 41 +++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/src/machine/machine_table.c b/src/machine/machine_table.c index 5626b0728..d9231cc75 100644 --- a/src/machine/machine_table.c +++ b/src/machine/machine_table.c @@ -66,6 +66,7 @@ extern const device_t vendex_device; extern const device_t c5sbm2_device; extern const device_t sb486pv_device; extern const device_t ap5s_device; +extern const device_t d943_device; extern const device_t dells333sl_device; const machine_filter_t machine_types[] = { @@ -11777,6 +11778,46 @@ const machine_t machines[] = { .net_device = NULL }, + { + .name = "[i430HX] Siemens-Nixdorf D943", + .internal_name = "d943", + .type = MACHINE_TYPE_SOCKET7_3V, + .chipset = MACHINE_CHIPSET_INTEL_430HX, + .init = machine_at_d943_init, + .p1_handler = NULL, + .gpio_handler = NULL, + .available_flag = MACHINE_AVAILABLE, + .gpio_acpi_handler = NULL, + .cpu = { + .package = CPU_PKG_SOCKET5_7, + .block = CPU_BLOCK_NONE, + .min_bus = 50000000, + .max_bus = 66666667, + .min_voltage = 2800, + .max_voltage = 3520, + .min_multi = 1.5, + .max_multi = 3.0 + }, + .bus_flags = MACHINE_PS2_PCI, + .flags = MACHINE_IDE_DUAL | MACHINE_AV | MACHINE_GAMEPORT | MACHINE_APM | MACHINE_ACPI , + .ram = { + .min = 8192, + .max = 131072, + .step = 8192 + }, + .nvrmask = 511, + .kbc_device = NULL, + .kbc_p1 = 0xff, + .gpio = 0xffffffff, + .gpio_acpi = 0xffffffff, + .device = &d943_device, + .fdc_device = NULL, + .sio_device = NULL, + .vid_device = &gd5436_onboard_pci_device, + .snd_device = &sb_vibra16s_onboard_device, + .net_device = NULL + }, + /* 430VX */ /* Has a SM(S)C FDC37C932FR Super I/O chip with on-chip KBC with AMI MegaKey (revision '5') KBC firmware. */ From 8f551991a48feab9297056d95ad1d2ff5310e6ee Mon Sep 17 00:00:00 2001 From: toggo9 <121191375+toggo9@users.noreply.github.com> Date: Thu, 29 May 2025 19:54:03 +0200 Subject: [PATCH 3/7] Update SNI D943 Audio and Video code. --- src/machine/m_at_socket7_3v.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/machine/m_at_socket7_3v.c b/src/machine/m_at_socket7_3v.c index ca096c6ad..7dd1f9bf0 100644 --- a/src/machine/m_at_socket7_3v.c +++ b/src/machine/m_at_socket7_3v.c @@ -646,11 +646,11 @@ machine_at_d943_init(const machine_t *model) spd_register(SPD_TYPE_EDO, 0x7, 256); - if (gfxcard[0] == VID_INTERNAL) - device_add(&gd5436_onboard_pci_device); + if (gfxcard[0] == VID_INTERNAL) + device_add(machine_get_vid_device(machine)); if (sound_card_current[0] == SOUND_INTERNAL) - device_add(&sb_vibra16s_onboard_device); + machine_snd = device_add(machine_get_snd_device(machine)); return ret; } From 8f78320aaf105f1cd62160ac7035bda70fa23832 Mon Sep 17 00:00:00 2001 From: toggo9 <121191375+toggo9@users.noreply.github.com> Date: Thu, 29 May 2025 19:54:55 +0200 Subject: [PATCH 4/7] Add SNI D943 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 3231acd80..c8166a973 100644 --- a/src/include/86box/machine.h +++ b/src/include/86box/machine.h @@ -708,6 +708,7 @@ extern int machine_at_fmb_init(const machine_t *); extern int machine_at_acerm3a_init(const machine_t *); extern int machine_at_ap53_init(const machine_t *); extern int machine_at_8500tuc_init(const machine_t *); +extern int machine_at_d943_init(const machine_t *); extern int machine_at_p55t2s_init(const machine_t *); extern int machine_at_p5vxb_init(const machine_t *); From 94f49282ac4854f244e676eae44ed91a94bfff0b Mon Sep 17 00:00:00 2001 From: toggo9 <121191375+toggo9@users.noreply.github.com> Date: Thu, 29 May 2025 20:01:53 +0200 Subject: [PATCH 5/7] Remove unnecessary Machine flag from the D943. --- src/machine/machine_table.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/machine/machine_table.c b/src/machine/machine_table.c index d9231cc75..a961e9997 100644 --- a/src/machine/machine_table.c +++ b/src/machine/machine_table.c @@ -11799,7 +11799,7 @@ const machine_t machines[] = { .max_multi = 3.0 }, .bus_flags = MACHINE_PS2_PCI, - .flags = MACHINE_IDE_DUAL | MACHINE_AV | MACHINE_GAMEPORT | MACHINE_APM | MACHINE_ACPI , + .flags = MACHINE_IDE_DUAL | MACHINE_AV | MACHINE_GAMEPORT | MACHINE_APM, .ram = { .min = 8192, .max = 131072, From 3ac92ccf4fefe71d415f5dbc5921e5d541534478 Mon Sep 17 00:00:00 2001 From: MaxwellS04 Date: Fri, 30 May 2025 23:20:50 +0700 Subject: [PATCH 6/7] Assorted Cirrus fixes 1. Correct the linear framebuffer setting on VLB Cirrus chips; should fix segfaults when you use them with default configuration 2. Add the "On-Board" name and correct internal_name to the onboard Cirrus Logic GD5420 --- src/video/vid_cl54xx.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/video/vid_cl54xx.c b/src/video/vid_cl54xx.c index 0d02c10c3..2377e792b 100644 --- a/src/video/vid_cl54xx.c +++ b/src/video/vid_cl54xx.c @@ -4796,7 +4796,7 @@ static const device_config_t gd5430_vlb_config[] = { .description = "Linear framebuffer base", .type = CONFIG_SELECTION, .default_string = NULL, - .default_int = 2, + .default_int = 2048, .file_filter = NULL, .spinner = { 0 }, .selection = { @@ -4871,7 +4871,7 @@ static const device_config_t gd5434_vlb_config[] = { .description = "Linear framebuffer base", .type = CONFIG_SELECTION, .default_string = NULL, - .default_int = 2, + .default_int = 2048, .file_filter = NULL, .spinner = { 0 }, .selection = { @@ -4982,8 +4982,8 @@ const device_t gd5420_isa_device = { }; const device_t gd5420_onboard_device = { - .name = "Cirrus Logic GD5420 (ISA)", - .internal_name = "cl_gd5420_isa", + .name = "Cirrus Logic GD5420 (ISA) (On-Board)", + .internal_name = "cl_gd5420_onboard", .flags = DEVICE_ISA16, .local = CIRRUS_ID_CLGD5420 | 0x200, .init = gd54xx_init, From 4a4aa3b0e18fa81c4d8b488c05ff8ec509052d25 Mon Sep 17 00:00:00 2001 From: TC1995 Date: Fri, 30 May 2025 20:45:12 +0200 Subject: [PATCH 7/7] Small important change for the 53c400 (May 30th, 2025) Upon an initial POST, the initital status/control 53c400 port should be 0, fixes various versions of the T130B driver on Windows 95 builds. --- src/scsi/scsi_ncr53c400.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/scsi/scsi_ncr53c400.c b/src/scsi/scsi_ncr53c400.c index 0e04e0b5e..7a87b4ac9 100644 --- a/src/scsi/scsi_ncr53c400.c +++ b/src/scsi/scsi_ncr53c400.c @@ -759,7 +759,7 @@ ncr53c400_init(const device_t *info) scsi_bus->bus_device = ncr->bus; scsi_bus->timer = ncr->timer; scsi_bus->priv = ncr->priv; - ncr400->status_ctrl = STATUS_BUFFER_NOT_READY; + ncr400->status_ctrl = 0x00; ncr400->buffer_host_pos = 128; timer_add(&ncr400->timer, ncr53c400_callback, ncr400, 0);