mirror of
https://github.com/86Box/86Box.git
synced 2026-03-04 11:48:23 -07:00
Merge branch '86Box:master' into broken-sensation1
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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
2132
src/machine/m_xt_ibm5550.c
Normal file
File diff suppressed because it is too large
Load Diff
@@ -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
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user