Merge branch '86Box:master' into broken-sensation1

This commit is contained in:
win2kgamer
2026-02-09 21:29:04 -06:00
committed by GitHub
55 changed files with 4410 additions and 1680 deletions

View File

@@ -26,6 +26,7 @@ add_library(mch OBJECT
m_europc.c
m_elt.c
m_xt_olivetti.c
m_xt_ibm5550.c
m_tandy.c
m_v86p.c
m_at_t3100e.c

View File

@@ -42,6 +42,7 @@
#include <86box/vid_cga.h>
#include <86box/flash.h>
#include <86box/machine.h>
#include <86box/sound.h>
/* ISA */
/*
@@ -369,6 +370,32 @@ machine_at_ama932j_init(const machine_t *model)
return ret;
}
int
machine_at_tandy1000rsx_init(const machine_t *model)
{
int ret;
ret = bios_load_linear("roms/machines/tandy1000rsx/tandy-1000rsx-1-10.00.bin",
0x000e0000, 131072, 0);
if (bios_only || !ret)
return ret;
machine_at_common_ide_init(model);
device_add(&headland_ht18c_device);
device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params);
device_add(&pssj_1e0_device);
if (fdc_current[0] == FDC_INTERNAL)
device_add(&fdc_at_device);
if (gfxcard[0] == VID_INTERNAL)
device_add(machine_get_vid_device(machine));
return ret;
}
/* Intel 82335 */
int
machine_at_adi386sx_init(const machine_t *model)

View File

@@ -544,17 +544,72 @@ machine_at_brio83xx_init(const machine_t *model)
return ret;
}
static const device_config_t como_config[] = {
// clang-format off
{
.name = "bios",
.description = "BIOS Version",
.type = CONFIG_BIOS,
.default_string = "como",
.default_int = 0,
.file_filter = NULL,
.spinner = { 0 },
.selection = { { 0 } },
.bios = {
{
.name = "AMIBIOS 6 (071595) - Revision 1.08 (Olivetti OEM)",
.internal_name = "como_olivetti",
.bios_type = BIOS_NORMAL,
.files_no = 1,
.local = 0,
.size = 262144,
.files = { "roms/machines/como/COMO_Olivetti_OEM.ROM", "" }
},
{
.name = "AMIBIOS 6 (071595) - Revision 1.12 (eMachines OEM)",
.internal_name = "como",
.bios_type = BIOS_NORMAL,
.files_no = 1,
.local = 0,
.size = 262144,
.files = { "roms/machines/como/COMO.ROM", "" }
},
{ .files_no = 0 }
}
},
{ .name = "", .description = "", .type = CONFIG_END }
// clang-format on
};
const device_t como_device = {
.name = "TriGem Como",
.internal_name = "como_device",
.flags = 0,
.local = 0,
.init = NULL,
.close = NULL,
.reset = NULL,
.available = NULL,
.speed_changed = NULL,
.force_redraw = NULL,
.config = como_config
};
int
machine_at_como_init(const machine_t *model)
{
int ret;
int ret = 0;
const char *fn;
ret = bios_load_linear("roms/machines/como/COMO.ROM",
0x000c0000, 262144, 0);
if (bios_only || !ret)
/* 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);

View File

@@ -426,6 +426,8 @@ machine_at_tuliptc38_init(const machine_t *model)
device_add(&ide_isa_device);
device_add_params(&fdc37c6xx_device, (void *) (FDC37C651 | FDC37C6XX_IDE_PRI));
video_reset(gfxcard[0]);
if (gfxcard[0] == VID_INTERNAL) {
bios_load_aux_linear("roms/machines/tuliptc38/VBIOS.BIN",
0x000c0000, 32768, 0);

View File

@@ -311,6 +311,8 @@ machine_at_dell466np_init(const machine_t *model)
machine_at_common_init(model);
device_add(&sis_85c461_device);
video_reset(gfxcard[0]);
if (gfxcard[0] == VID_INTERNAL)
device_add(machine_get_vid_device(machine));
else {
@@ -354,6 +356,8 @@ machine_at_valuepoint433_init(const machine_t *model) // hangs without the PS/2
if (fdc_current[0] == FDC_INTERNAL)
device_add(&fdc_at_device);
video_reset(gfxcard[0]);
if (gfxcard[0] != VID_INTERNAL) {
for (uint16_t i = 0; i < 32768; i++)
rom[i] = mem_readb_phys(0x000c0000 + i);

View File

@@ -166,6 +166,29 @@ machine_at_greenb_init(const machine_t *model)
return ret;
}
/* OPTi 499 */
int
machine_at_xenon_init(const machine_t *model)
{
int ret;
ret = bios_load_linear("roms/machines/xenon/addx-bios-7-71-i28f001.bin",
0x000e0000, 131072, 0);
if (bios_only || !ret)
return ret;
machine_at_common_init(model);
device_add(&opti499_device);
device_add(&ide_vlb_device);
device_add_params(&fdc37c6xx_device, (void *) (FDC37C661 | FDC37C6XX_IDE_PRI));
device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params);
device_add(&intel_flash_bxt_device);
return ret;
}
/* OPTi 895 */
static const device_config_t j403tg_config[] = {
// clang-format off
@@ -467,6 +490,8 @@ machine_at_tg486g_init(const machine_t *model)
device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params);
video_reset(gfxcard[0]);
if (gfxcard[0] != VID_INTERNAL) {
for (uint16_t i = 0; i < 32768; i++)
rom[i] = mem_readb_phys(0x000c0000 + i);

2132
src/machine/m_xt_ibm5550.c Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -3033,6 +3033,49 @@ const machine_t machines[] = {
.snd_device = NULL,
.net_device = NULL
},
{
.name = "[8086] IBM Multistation 5550",
.internal_name = "ibm5550",
.type = MACHINE_TYPE_8086,
.chipset = MACHINE_CHIPSET_DISCRETE,
.init = machine_xt_ibm5550_init,
.p1_handler = NULL,
.gpio_handler = NULL,
.available_flag = MACHINE_AVAILABLE,
.gpio_acpi_handler = NULL,
.cpu = {
.package = CPU_PKG_8086,
.block = CPU_BLOCK_NONE,
.min_bus = 0,
.max_bus = 0,
.min_voltage = 0,
.max_voltage = 0,
.min_multi = 0,
.max_multi = 0
},
.bus_flags = MACHINE_PC,
.flags = MACHINE_VIDEO_FIXED | MACHINE_KEYBOARD,
.ram = {
.min = 256,
.max = 640,
.step = 128
},
.nvrmask = 15,
.jumpered_ecp_dma = 0,
.default_jumpered_ecp_dma = -1,
.kbc_device = NULL,
.kbc_params = 0x00000000,
.kbc_p1 = 0xff,
.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
},
/* 286 AT machines */
/* Has IBM AT KBC firmware. */
@@ -5468,6 +5511,50 @@ const machine_t machines[] = {
.snd_device = NULL,
.net_device = NULL
},
/* Has unknown KBC firmware */
{
.name = "[HT18] Tandy 1000 RSX",
.internal_name = "tandy1000rsx",
.type = MACHINE_TYPE_386SX,
.chipset = MACHINE_CHIPSET_HT18,
.init = machine_at_tandy1000rsx_init,
.p1_handler = machine_generic_p1_handler,
.gpio_handler = NULL,
.available_flag = MACHINE_AVAILABLE,
.gpio_acpi_handler = NULL,
.cpu = {
.package = CPU_PKG_386SX,
.block = CPU_BLOCK_NONE,
.min_bus = 0,
.max_bus = 0,
.min_voltage = 0,
.max_voltage = 0,
.min_multi = 0,
.max_multi = 0
},
.bus_flags = MACHINE_PS2,
.flags = MACHINE_IDE | MACHINE_VIDEO | MACHINE_GAMEPORT,
.ram = {
.min = 1024,
.max = 9216,
.step = 512
},
.nvrmask = 127,
.jumpered_ecp_dma = 0,
.default_jumpered_ecp_dma = -1,
.kbc_device = &kbc_at_device,
.kbc_params = 0x00000000,
.kbc_p1 = 0x000004f0,
.gpio = 0xffffffff,
.gpio_acpi = 0xffffffff,
.device = NULL,
.kbd_device = NULL,
.fdc_device = NULL,
.sio_device = NULL,
.vid_device = &gd5402_onboard_device,
.snd_device = NULL,
.net_device = NULL
},
/* Most likely has a Phoenix MultiKey/42 keyboard controller. */
{
.name = "[Intel 82335] ADI 386SX",
@@ -8805,6 +8892,50 @@ const machine_t machines[] = {
.snd_device = NULL,
.net_device = NULL
},
/* Has AMIKey F KBC firmware. */
{
.name = "[OPTi 499] ADD-X Normerel Xenon",
.internal_name = "xenon",
.type = MACHINE_TYPE_486_S3,
.chipset = MACHINE_CHIPSET_OPTI_499,
.init = machine_at_xenon_init,
.p1_handler = machine_generic_p1_handler,
.gpio_handler = NULL,
.available_flag = MACHINE_AVAILABLE,
.gpio_acpi_handler = NULL,
.cpu = {
.package = CPU_PKG_SOCKET3,
.block = CPU_BLOCK_NONE,
.min_bus = 0,
.max_bus = 0,
.min_voltage = 0,
.max_voltage = 0,
.min_multi = 0,
.max_multi = 0
},
.bus_flags = MACHINE_PS2_VLB,
.flags = MACHINE_IDE | MACHINE_APM,
.ram = {
.min = 1024,
.max = 65536,
.step = 1024
},
.nvrmask = 127,
.jumpered_ecp_dma = 0,
.default_jumpered_ecp_dma = -1,
.kbc_device = &kbc_at_device,
.kbc_params = KBC_VEN_AMI | 0x00004600,
.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
},
/* Version 1.0 has an AMIKEY-2, version 2.0 has a VIA VT82C42N KBC. */
{
.name = "[OPTi 895] Jetway J-403TG",
@@ -18575,11 +18706,11 @@ const machine_t machines[] = {
.kbc_p1 = 0x00000cf0,
.gpio = 0xffffffff,
.gpio_acpi = 0xffffffff,
.device = NULL,
.device = &como_device,
.kbd_device = NULL,
.fdc_device = NULL,
.sio_device = NULL,
.vid_device = NULL,
.vid_device = NULL, /* Onboard video not yet emulated: ATi Rage IIc AGP */
.snd_device = &cs4235_onboard_device,
.net_device = NULL
},