Merge remote-tracking branch 'origin/master' into feature/recompiler_improvements

This commit is contained in:
OBattler
2026-02-26 12:44:09 +01:00
139 changed files with 9857 additions and 2018 deletions

View File

@@ -1871,6 +1871,27 @@ update_mouse_msg(void)
(mouse_get_buttons() > 2) ? plat_get_string(STRING_MOUSE_RELEASE) : plat_get_string(STRING_MOUSE_RELEASE_MMB));
swprintf(mouse_msg[2], sizeof_w(mouse_msg[2]), L"%ls v%ls - %%i%%%% - %ls - %ls/%ls",
EMU_NAME_W, EMU_VERSION_FULL_W, wmachine, wcpufamily, wcpu);
#else
#ifdef __APPLE__
/*
* On macOS, BSD swprintf fails (returns -1) when the format string
* or a %ls argument contains non-ASCII wide characters (e.g. the
* native key symbols ⌘ U+2318, ⌫ U+232B) and the C locale is
* active. Store just the message suffixes here; the title update
* path in pc_render_monitor_dispatch() builds the full string
* without swprintf.
*/
wcsncpy(mouse_msg[0], plat_get_string(STRING_MOUSE_CAPTURE), sizeof_w(mouse_msg[0]) - 1);
mouse_msg[0][sizeof_w(mouse_msg[0]) - 1] = L'\0';
{
wchar_t *rel = (mouse_get_buttons() > 2) ? plat_get_string(STRING_MOUSE_RELEASE)
: plat_get_string(STRING_MOUSE_RELEASE_MMB);
wcsncpy(mouse_msg[1], rel, sizeof_w(mouse_msg[1]) - 1);
mouse_msg[1][sizeof_w(mouse_msg[1]) - 1] = L'\0';
}
mouse_msg[2][0] = L'\0';
#else
swprintf(mouse_msg[0], sizeof_w(mouse_msg[0]), L"%%i%%%% - %ls",
plat_get_string(STRING_MOUSE_CAPTURE));
@@ -1878,6 +1899,7 @@ update_mouse_msg(void)
(mouse_get_buttons() > 2) ? plat_get_string(STRING_MOUSE_RELEASE) : plat_get_string(STRING_MOUSE_RELEASE_MMB));
wcsncpy(mouse_msg[2], L"%i%%", sizeof_w(mouse_msg[2]));
#endif
#endif
}
void
@@ -2010,11 +2032,20 @@ pc_run(void)
else
fps = ((fps + 20) / 50) * 50;
#endif
swprintf(temp, sizeof_w(temp), mouse_msg[mouse_msg_idx], fps / (force_10ms ? 1 : 10));
#ifdef __APPLE__
/*
* mouse_msg[] stores suffixes only on macOS (see update_mouse_msg).
* Build the title without passing non-ASCII chars through swprintf.
*/
swprintf(temp, sizeof_w(temp), L"%i%%", fps / (force_10ms ? 1 : 10));
if (mouse_msg[mouse_msg_idx][0]) {
wcsncat(temp, L" - ", sizeof_w(temp) - wcslen(temp) - 1);
wcsncat(temp, mouse_msg[mouse_msg_idx], sizeof_w(temp) - wcslen(temp) - 1);
}
/* Needed due to modifying the UI on the non-main thread is a big no-no. */
dispatch_async_f(dispatch_get_main_queue(), wcsdup((const wchar_t *) temp), _ui_window_title);
#else
swprintf(temp, sizeof_w(temp), mouse_msg[mouse_msg_idx], fps / (force_10ms ? 1 : 10));
ui_window_title(temp);
#endif
title_update = 0;

View File

@@ -1614,7 +1614,7 @@ ali1543_init(const device_t *info)
/* ACPI */
dev->acpi = device_add(&acpi_ali_device);
dev->nvr = device_add(&piix4_nvr_device);
dev->nvr = device_add_params(&nvr_at_device, (void *) (uintptr_t) NVR_PIIX4);
/* DMA */
dma_alias_set();

View File

@@ -1581,11 +1581,11 @@ piix_init(const device_t *info)
if (dev->type > 3) {
if (info->local & PIIX4_NVR_AMI_1995J)
dev->nvr = device_add(&piix4_ami_1995j_nvr_device);
dev->nvr = device_add_params(&nvr_at_device, (void *) (uintptr_t) NVR_PIIX4_AMI_1995J);
else if (info->local & PIIX4_NVR_AMI_1995)
dev->nvr = device_add(&piix4_ami_1995_nvr_device);
dev->nvr = device_add_params(&nvr_at_device, (void *) (uintptr_t) NVR_PIIX4_AMI_1995);
else
dev->nvr = device_add(&piix4_nvr_device);
dev->nvr = device_add_params(&nvr_at_device, (void *) (uintptr_t) NVR_PIIX4);
dev->smbus = device_add(&piix4_smbus_device);
dev->acpi = device_add(&acpi_intel_device);

View File

@@ -84,7 +84,10 @@ opti499_recalc(opti499_t *dev)
base = 0xd0000 + (i << 14);
if ((dev->regs[0x22] & ((base >= 0xe0000) ? 0x20 : 0x40)) && (dev->regs[0x23] & (1 << i))) {
shflags = MEM_READ_INTERNAL;
if (dev->regs[0x2d] & (1 << ((i >> 1) + 2)))
shflags = MEM_READ_EXTANY;
else
shflags = MEM_READ_INTERNAL;
shflags |= (dev->regs[0x22] & ((base >= 0xe0000) ? 0x08 : 0x10)) ? MEM_WRITE_DISABLED : MEM_WRITE_INTERNAL;
} else {
if (dev->regs[0x2d] & (1 << ((i >> 1) + 2)))

View File

@@ -203,7 +203,7 @@ opti602_init(UNUSED(const device_t *info))
io_sethandler(0x0022, 0x0001, opti602_read, NULL, NULL, opti602_write, NULL, NULL, dev);
io_sethandler(0x0024, 0x0001, opti602_read, NULL, NULL, opti602_write, NULL, NULL, dev);
dev->nvr = device_add(&at_mb_nvr_device);
dev->nvr = device_add_params(&nvr_at_device, (void *) (uintptr_t) NVR_AT_MB);
opti602_reset(dev);

View File

@@ -44,6 +44,7 @@ typedef struct opti895_t {
static uint8_t masks[0x10] = { 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe,
0xe3, 0xff, 0xe3, 0xff, 0x00, 0xff, 0xff, 0xff };
#define ENABLE_OPTI895_LOG 1
#ifdef ENABLE_OPTI895_LOG
int opti895_do_log = ENABLE_OPTI895_LOG;
@@ -159,6 +160,8 @@ opti895_write(uint16_t addr, uint8_t val, void *priv)
((dev->idx >= 0xe0) && (dev->idx <= 0xef))) {
if (dev->idx > 0x2f)
dev->regs[dev->idx] = val;
else if (dev->idx == 0x28)
dev->regs[dev->idx] = (val & masks[dev->idx - 0x20]) | 0x18;
else
dev->regs[dev->idx] = val & masks[dev->idx - 0x20];
opti895_log("dev->regs[%04x] = %08x\n", dev->idx, val);
@@ -247,7 +250,11 @@ opti895_read(uint16_t addr, void *priv)
if (((dev->idx >= 0x20) && (dev->idx <= 0x2f) && (dev->idx != 0x2c)) ||
((dev->idx >= 0xe0) && (dev->idx <= 0xef))) {
ret = dev->regs[dev->idx];
if (dev->idx == 0xe0)
if (dev->idx == 0x21)
ret |= 0x1c;
else if (dev->idx == 0x28)
ret |= 0x18;
else if (dev->idx == 0xe0)
ret = (ret & 0xf6) | (in_smm ? 0x00 : 0x08) | !!dev->forced_green;
}
break;
@@ -291,7 +298,7 @@ opti895_init(const device_t *info)
dev->regs[0x01] = 0xc0;
dev->regs[0x22] = 0xc4;
dev->regs[0x22] = 0xe4;
dev->regs[0x25] = 0x7c;
dev->regs[0x26] = 0x10;
dev->regs[0x27] = 0xde;
@@ -304,7 +311,7 @@ opti895_init(const device_t *info)
dev->regs[0xe8] = 0x08;
dev->regs[0xe9] = 0x08;
dev->regs[0xeb] = 0xff;
dev->regs[0xef] = 0x40;
dev->regs[0xef] = 0x41;
opti895_recalc(dev);

View File

@@ -1238,7 +1238,7 @@ sis_5513_pci_to_isa_init(UNUSED(const device_t *info))
dev->pit_read_reg = pit_is_fast ? pitf_read_reg : pit_read_reg;
/* NVR */
dev->nvr = device_add(&at_mb_nvr_device);
dev->nvr = device_add_params(&nvr_at_device, (void *) (uintptr_t) NVR_AT_MB);
switch (dev->rev) {
case 0x00:

View File

@@ -673,9 +673,9 @@ static void
ide_sec_disable();
if (info->local)
dev->nvr = device_add(&ami_1994_nvr_device);
dev->nvr = device_add_params(&nvr_at_device, (void *) (uintptr_t) NVR_AMI_1994);
else
dev->nvr = device_add(&at_nvr_device);
dev->nvr = device_add_params(&nvr_at_device, (void *) (uintptr_t) NVR_AT);
dma_high_page_init();

View File

@@ -667,7 +667,7 @@ sis_85c50x_init(UNUSED(const device_t *info))
dev->pit_read_reg = pit_is_fast ? pitf_read_reg : pit_read_reg;
/* NVR */
dev->nvr = device_add(&at_mb_nvr_device);
dev->nvr = device_add_params(&nvr_at_device, (void *) (uintptr_t) NVR_AT_MB);
device_add(&ide_pci_2ch_device);
}

View File

@@ -1722,7 +1722,7 @@ pipc_init(const device_t *info)
else if (dev->local >= VIA_PIPC_596A)
dev->smbus = device_add(&piix4_smbus_device);
dev->nvr = device_add(&via_nvr_device);
dev->nvr = device_add_params(&nvr_at_device, (void *) (uintptr_t) NVR_VIA);
if (dev->local >= VIA_PIPC_596A) {
dev->acpi = device_add(&acpi_via_596b_device);

View File

@@ -12,11 +12,17 @@
*
* Copyright 2020 Miran Grca.
*/
#ifdef ENABLE_VL82C48X_LOG
#include <stdarg.h>
#endif
#include <stdio.h>
#include <stdint.h>
#include <stdlib.h>
#include <string.h>
#include <wchar.h>
#define HAVE_STDARG_H
#include <86box/86box.h>
#include "cpu.h"
#include <86box/timer.h>
@@ -27,11 +33,31 @@
#include <86box/nmi.h>
#include <86box/port_92.h>
#include <86box/chipset.h>
#include <86box/log.h>
#ifdef ENABLE_VL82C48X_LOG
int vl82c48x_do_log = ENABLE_VL82C48X_LOG;
static void
vl82c48x_log(void *priv, const char *fmt, ...)
{
if (vl82c48x_do_log) {
va_list ap;
va_start(ap, fmt);
log_out(priv, fmt, ap);
va_end(ap);
}
}
#else
# define vl82c48x_log(fmt, ...)
#endif
typedef struct vl82c480_t {
uint8_t idx;
uint8_t regs[256];
uint32_t banks[4];
void * log; // New logging system
} vl82c480_t;
static int
@@ -77,6 +103,14 @@ vl82c480_recalc_shadow(vl82c480_t *dev)
}
}
/* Implement ROMCS# disable portion of ROMMOV behavior */
if ((dev->regs[0x11] == 0x00) && ((dev->regs[0x0c] & 0x20) || (dev->regs[0x0c] & 0x10)))
mem_set_mem_state(0xe0000, 0x10000, MEM_READ_EXTERNAL | MEM_WRITE_EXTERNAL);
if (!(dev->regs[0x0f] & 0x0f) && !(dev->regs[0x0c] & 0x20))
mem_set_mem_state(0xc0000, 0x8000, MEM_READ_EXTERNAL | MEM_WRITE_EXTERNAL);
if (!(dev->regs[0x0f] & 0xf0) && !((dev->regs[0x0c] & 0x30) == 0x30))
mem_set_mem_state(0xc8000, 0x8000, MEM_READ_EXTERNAL | MEM_WRITE_EXTERNAL);
flushmmucache();
}
@@ -116,6 +150,8 @@ vl82c480_write(uint16_t addr, uint8_t val, void *priv)
{
vl82c480_t *dev = (vl82c480_t *) priv;
vl82c48x_log(dev->log, "[%04X:%08X] VL82c48x: [W] %04X = %02X\n", CS, cpu_state.pc, addr, val);
switch (addr) {
case 0xec:
dev->idx = val;
@@ -146,6 +182,10 @@ vl82c480_write(uint16_t addr, uint8_t val, void *priv)
case 0x07:
dev->regs[dev->idx] = (dev->regs[dev->idx] & 0x40) | (val & 0xbf);
break;
case 0x0c:
dev->regs[dev->idx] = val;
vl82c480_recalc_shadow(dev);
break;
case 0x0d ... 0x12:
dev->regs[dev->idx] = val;
vl82c480_recalc_shadow(dev);
@@ -195,6 +235,8 @@ vl82c480_read(uint16_t addr, void *priv)
break;
}
vl82c48x_log(dev->log, "[%04X:%08X] VL82c48x: [R] %04X = %02X\n", CS, cpu_state.pc, addr, ret);
return ret;
}
@@ -203,6 +245,11 @@ vl82c480_close(void *priv)
{
vl82c480_t *dev = (vl82c480_t *) priv;
if (dev->log != NULL) {
log_close(dev->log);
dev->log = NULL;
}
free(dev);
}
@@ -217,6 +264,8 @@ vl82c480_init(const device_t *info)
uint8_t min_j = (machines[machine].init == machine_at_monsoon_init) ? 2 : 2;
uint8_t max_j = (machines[machine].init == machine_at_monsoon_init) ? 7 : 7;
dev->log = log_open("VL82c48x");
dev->regs[0x00] = info->local;
dev->regs[0x01] = 0xff;
dev->regs[0x02] = 0x8a;

View File

@@ -12,7 +12,7 @@
* win2kgamer
*
* Copyright 2020-2025 Miran Grca.
* Copyright 2025 win2kgamer
* Copyright 2025-2026 win2kgamer
*/
#ifdef ENABLE_VL82C59X_LOG
#include <stdarg.h>
@@ -80,6 +80,9 @@ typedef struct vl82c59x_t {
port_92_t *port_92;
nvr_t *nvr;
uint32_t banks[4];
uint8_t bankcfg[4];
void * log; /* New logging system */
} vl82c59x_t;
@@ -207,6 +210,52 @@ vl82c59x_set_pm_io(void *priv)
}
void
vl82c59x_recalc_banks(vl82c59x_t *dev)
{
uint32_t sizes[8] = { 2048, 4096, 8192, 16384, 32768, 65536, 131072, 262144 };
uint8_t shifts[4] = { 0, 4, 0, 4 };
uint8_t regs[4] = { 0x58, 0x58, 0x59, 0x59 };
uint32_t total = 0;
for (uint8_t i = 0; i < 4; i++) {
uint8_t shift = shifts[i];
uint8_t reg = regs[i];
uint8_t cfg = (dev->pci_conf[reg] >> shift) & 0x03; /* Module types */
uint8_t dbl = ((dev->pci_conf[reg] >> shift) & 0x08) ? 1 : 0; /* Single/double sided */
uint8_t conf = (cfg << 1) | (dbl & 0x01);
uint32_t size = sizes[conf];
vl82c59x_log(dev->log, "VL82c59x DRAM recalc: bank %i, cfg = %02X, dbl = %i, conf = %02X, size = %i, RAMCTL0 = %02X\n", i, cfg, dbl, conf, size, dev->pci_conf[0x5c]);
vl82c59x_log(dev->log, "VL82c59x DRAM recalc: bank %i size = %i\n", i, dev->banks[i]);
/* Handle case where the BIOS programs RAMCFGx for dual-sided/ranked memory when single-sided memory is installed */
if (((dev->bankcfg[i] & 0x08) == 0x00) && dbl == 1) {
size = sizes[conf - 1];
vl82c59x_log(dev->log, "VL82c59x DRAM recalc: bank %i mismatch, bankcfg = %02X, reg = %02X\n", dev->bankcfg[i], dev->pci_conf[reg]);
}
if (!(dev->pci_conf[0x5c] & (1 << i)))
size = 0;
total += MIN(dev->banks[i], size);
vl82c59x_log(dev->log, "VL82c59x DRAM recalc: bank %i, total = %i\n", i, total);
}
if (total > 1024) {
mem_mapping_set_addr(&ram_low_mapping, 0x00000000, 0x000a0000);
mem_mapping_set_addr(&ram_high_mapping, 0x00100000, (total - 1024) << 10);
} else {
if (total >= 1024)
mem_mapping_set_addr(&ram_low_mapping, 0x00000000, 0x000a0000);
else
mem_mapping_disable(&ram_low_mapping);
mem_mapping_disable(&ram_high_mapping);
}
flushmmucache();
}
static void
vl82c59x_write(int func, int addr, UNUSED(int len), uint8_t val, void *priv)
{
@@ -231,12 +280,21 @@ vl82c59x_write(int func, int addr, UNUSED(int len), uint8_t val, void *priv)
case 0x58: /* RAMCFG0 */
case 0x59: /* RAMCFG1 */
dev->pci_conf[addr] = val;
vl82c59x_log(dev->log, "VL82c59x: RAMCFGx write, RAMCFG0 = %02X, RAMCFG1 = %02X\n", dev->pci_conf[0x58], dev->pci_conf[0x59]);
if (machines[machine].init == machine_at_bravoms586_init)
vl82c59x_recalc_banks(dev);
break;
case 0x5a: /* Wildcat EDO RAM control */
if (dev->type == 0x01)
dev->pci_conf[addr] = val;
break;
case 0x5c ... 0x5e: /* RAMCTL0-RAMCTL2 */
case 0x5c: /* RAMCTL0 */
vl82c59x_log(dev->log, "VL82c59x: RAMCTL0 write\n");
dev->pci_conf[addr] = val;
if (machines[machine].init == machine_at_bravoms586_init)
vl82c59x_recalc_banks(dev);
break;
case 0x5d ... 0x5e: /* RAMCTL1-RAMCTL2 */
case 0x5f ... 0x60:
case 0x62:
/* Apricot XEN-PC Ruby/Jade BIOS requires bit 2 to be set or */
@@ -483,6 +541,47 @@ vl82c59x_reset(void *priv)
cpu_cache_int_enabled = 1;
cpu_cache_ext_enabled = 1;
cpu_update_waitstates();
/* Init DRAM bank registers */
uint32_t sizes[8] = { 2048, 4096, 8192, 16384, 32768, 65536, 131072, 262144 };
uint8_t reg_vals[8] = { 0x00, 0x08, 0x01, 0x09, 0x02, 0x0a, 0x03, 0x0b };
uint32_t ms = mem_size;
dev->pci_conf[0x58] = 0x00; /* RAMCFG0 */
dev->pci_conf[0x59] = 0x00; /* RAMCFG1 */
dev->pci_conf[0x5c] = 0x00; /* RAMCTL0 */
if (ms > 0) for (uint8_t i = 0; i < 4; i++ ) {
for (uint8_t j = 0; j < 8; j++ ) {
if (ms >= sizes[j] ) {
dev->banks[i] = sizes[j];
dev->bankcfg[i] = reg_vals[j];
dev->pci_conf[0x5c] |= (1 << i);
} else
break;
}
ms -= dev->banks[i];
if ((ms == 0 || dev->banks[i] == 0))
break;
}
for (uint8_t i = 0; i < 4; i++ ) {
if (dev->banks[0] != 0)
dev->pci_conf[0x58] = (dev->bankcfg[0] & 0x0f);
if (dev->banks[1] != 0)
dev->pci_conf[0x58] |= ((dev->bankcfg[1] & 0x0f) << 4);
if (dev->banks[2] != 0)
dev->pci_conf[0x59] = (dev->bankcfg[2] & 0x0f);
if (dev->banks[3] != 0)
dev->pci_conf[0x59] |= ((dev->bankcfg[3] & 0x0f) << 4);
}
vl82c59x_log(dev->log, "VL82c59x: DRAM bank init, RAMCFG0 = %02X, RAMCFG1 = %02X, RAMCTL0 = %02X\n", dev->pci_conf[0x58], dev->pci_conf[0x59], dev->pci_conf[0x5c]);
vl82c59x_log(dev->log, "VL82c59x: DRAM bank vals: %i, %i, %i, %i\n", dev->banks[0], dev->banks[1], dev->banks[2], dev->banks[3]);
}
static void
@@ -523,7 +622,7 @@ vl82c59x_init(UNUSED(const device_t *info))
dev->port_92 = device_add(&port_92_device);
/* NVR */
dev->nvr = device_add(&at_nvr_device);
dev->nvr = device_add_params(&nvr_at_device, (void *) (uintptr_t) NVR_AT);
dev->smram[0] = smram_add();
dev->smram[1] = smram_add();

View File

@@ -1393,7 +1393,7 @@ wd76c10_init(UNUSED(const device_t *info))
dev->mem_pages[i] = i - 0x20;
device_add(&port_92_inv_device);
dev->nvr = device_add(&amstrad_megapc_nvr_device);
dev->nvr = device_add_params(&nvr_at_device, (void *) (uintptr_t) NVR_AT_ZERO_DEFAULT);
dev->uart[0] = device_add_inst(&ns16450_device, 1);
dev->uart[1] = device_add_inst(&ns16450_device, 2);
dev->lpt = device_add_inst(&lpt_port_device, 1);

View File

@@ -1016,27 +1016,37 @@ load_image_file(char *dest, char *p, uint8_t *ui_wp)
int ret = 0;
char *slash = NULL;
char *above = NULL;
char *above2 = NULL;
char *use = NULL;
if ((slash = memrmem(usr_path + strlen(usr_path) - 2, usr_path, "/")) != NULL) {
slash++;
above = (char *) calloc(1, slash - usr_path + 1);
memcpy(above, usr_path, slash - usr_path);
if ((slash = memrmem(above + strlen(above) - 2, above, "/")) != NULL) {
slash++;
above2 = (char *) calloc(1, slash - above + 1);
memcpy(above2, above, slash - above);
}
}
if (strstr(p, "wp://") == p) {
p += 5;
prefix = "wp://";
if (ui_wp != NULL)
*ui_wp = 1;
p += 5;
prefix = "wp://";
if (ui_wp != NULL)
*ui_wp = 1;
} else if ((ui_wp != NULL) && *ui_wp)
prefix = "wp://";
prefix = "wp://";
if (strstr(p, "ioctl://") == p) {
if (strlen(p) > (MAX_IMAGE_PATH_LEN - 11))
ret = 1;
else
snprintf(dest, MAX_IMAGE_PATH_LEN, "%s", p);
if (strlen(p) > (MAX_IMAGE_PATH_LEN - 11))
ret = 1;
else
snprintf(dest, MAX_IMAGE_PATH_LEN, "%s", p);
if (above2 != NULL)
free(above2);
if (above != NULL)
free(above);
@@ -1051,6 +1061,13 @@ load_image_file(char *dest, char *p, uint8_t *ui_wp)
else
snprintf(dest, MAX_IMAGE_PATH_LEN, "%s%s%s%s", prefix, exe_path, path_get_slash(exe_path),
p + strlen("<exe_path>/"));
} else if (memcmp(p, "../../", strlen("../../")) == 0) {
use = (above2 == NULL) ? usr_path : above2;
if ((strlen(prefix) + strlen(use) + strlen(path_get_slash(use)) + strlen(p + strlen("../../"))) >
(MAX_IMAGE_PATH_LEN - 11))
ret = 1;
else
snprintf(dest, MAX_IMAGE_PATH_LEN, "%s%s%s%s", prefix, use, path_get_slash(use), p + strlen("../../"));
} else if (memcmp(p, "../", strlen("../")) == 0) {
use = (above == NULL) ? usr_path : above;
if ((strlen(prefix) + strlen(use) + strlen(path_get_slash(use)) + strlen(p + strlen("../"))) >
@@ -1072,6 +1089,9 @@ load_image_file(char *dest, char *p, uint8_t *ui_wp)
path_normalize(dest);
if (above2 != NULL)
free(above2);
if (above != NULL)
free(above);
@@ -3146,11 +3166,25 @@ save_image_file(char *cat, char *var, char *src)
char *prefix = "";
char *slash = NULL;
char *above = NULL;
char *above2 = NULL;
char *above3 = NULL;
if ((slash = memrmem(usr_path + strlen(usr_path) - 2, usr_path, "/")) != NULL) {
slash++;
above = (char *) calloc(1, slash - usr_path + 1);
memcpy(above, usr_path, slash - usr_path);
if ((slash = memrmem(above + strlen(above) - 2, above, "/")) != NULL) {
slash++;
above2 = (char *) calloc(1, slash - above + 1);
memcpy(above2, above, slash - above);
if ((slash = memrmem(above2 + strlen(above2) - 2, above2, "/")) != NULL) {
slash++;
above3 = (char *) calloc(1, slash - above2 + 1);
memcpy(above3, above2, slash - above2);
}
}
}
path_normalize(src);
@@ -3164,7 +3198,11 @@ save_image_file(char *cat, char *var, char *src)
sprintf(temp, "%s", src);
else if (!strnicmp(src, usr_path, strlen(usr_path)))
sprintf(temp, "%s%s", prefix, &src[strlen(usr_path)]);
else if ((above != NULL) && !strnicmp(src, above, strlen(above)))
/* Do not relativize to root. */
else if ((above2 != NULL) && (above3 != NULL) && !strnicmp(src, above2, strlen(above2)))
sprintf(temp, "../../%s%s", prefix, &src[strlen(above2)]);
/* Do not relativize to root. */
else if ((above != NULL) && (above2 != NULL) && !strnicmp(src, above, strlen(above)))
sprintf(temp, "../%s%s", prefix, &src[strlen(above)]);
else if (!strnicmp(src, exe_path, strlen(exe_path)))
sprintf(temp, "<exe_path>/%s%s", prefix, &src[strlen(exe_path)]);
@@ -3173,6 +3211,12 @@ save_image_file(char *cat, char *var, char *src)
ini_section_set_string(cat, var, temp);
if (above3 != NULL)
free(above3);
if (above2 != NULL)
free(above2);
if (above != NULL)
free(above);
}

View File

@@ -2184,7 +2184,7 @@ read_p1(atkbc_t *dev)
-----------------
IBM PS/1: xxxxxxxx
IBM PS/2 MCA: xxxxx1xx
IBM PS/2 Model 30-286: xxxxx1xx
IBM PS/2 Model 30-286: x0xxx1xx
Intel AMI Pentium BIOS'es with AMI MegaKey KB-5 keyboard controller: x1x1xxxx
Acer: xxxxx0xx
Packard Bell PB450: xxxxx1xx
@@ -2199,7 +2199,8 @@ read_p1(atkbc_t *dev)
Acer: Pull down bit 6 if primary display is MDA.
Pull down bit 2 always (must be so to enable CMOS Setup).
IBM PS/1: Pull down bit 6 if current floppy drive is 3.5".
IBM PS/2 Model 30-286: Pull down bits 5 and 4 based on planar memory size.
IBM PS/2 Model 30-286: Pull down bit 6 always (for 1.44M floppy).
Pull down bits 5 and 4 based on planar memory size.
Epson Action Tower 2600: Pull down bit 3 always (for Epson logo).
NCR: Pull down bit 5 always (power-on default speed = high).
Pull down bit 3 if there is no FPU.
@@ -2215,6 +2216,7 @@ read_p1(atkbc_t *dev)
Bit 6: Mostly, display: 0 = CGA, 1 = MDA, inverted on Xi8088 and Acer KBC's;
Intel AMI MegaKey KB-5: Used for green features, SMM handler expects it to be set;
IBM PS/1 Model 2011: 0 = current FDD is 3.5", 1 = current FDD is 5.25";
IBM PS/2 Model 30-286: 0 = drive A is 1.44M, 1 = drive A is 720k;
Compaq: 0 = Compaq dual-scan display, 1 = non-Compaq display.
Bit 5: Mostly, manufacturing jumper: 0 = installed (infinite loop at POST), 1 = not installed;
NCR: power-on default speed: 0 = high, 1 = low;

View File

@@ -216,22 +216,24 @@ key_process(uint16_t scan, int down)
*/
if (key5576mode) {
int i = 0;
if (!down) {
/* Do and exit the 5576-001 emulation when a key is pressed other than trigger keys. */
if (scan != 0x1d && scan != 0x2a && scan != 0x138)
{
if (down) {
while (scconv55_8a[i].sc != 0) {
if (scconv55_8a[i].sc == scan) {
while (scconv55_8a[i].mk[c] != 0)
keyboard_send(scconv55_8a[i].mk[c++]);
}
i++;
}
}
/* Do and exit the 5576-001 emulation when a key is pressed other than trigger keys. */
if (scan != 0x1d && scan != 0x2a && scan != 0x138) {
if (!down) {
key5576mode = 0;
kbc_at_log("5576-001 key emulation disabled.\n");
}
}
while (scconv55_8a[i].sc != 0)
{
if (scconv55_8a[i].sc == scan) {
while (scconv55_8a[i].mk[c] != 0)
keyboard_send(scconv55_8a[i].mk[c++]);
return;
}
i++;
/* If the key is found in the table, the scancode has been sent.
Or else, do nothing. */
return;
}
}

View File

@@ -52,6 +52,14 @@
Bit 0 = ????
*/
/*
Intel Monsoon bit meanings:
Bit 5 = Password enable
Bit 4 = Onboard video: 1 = disabled, 0 = enabled
Bit 3 = CMOS Setup enable
Bit 2 = CMOS clear: 1 = normal, 0 = clear CMOS
*/
typedef struct phoenix_486_jumper_t {
uint8_t type;
uint8_t jumper;
@@ -84,7 +92,11 @@ 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
else if (dev->type == 3) { /* Intel Monsoon */
dev->jumper = ((val & 0xef) | 0x2c);
if (gfxcard[0] != 0x01)
dev->jumper |= 0x10;
} else
dev->jumper = val;
}
@@ -106,7 +118,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 = 0x2c;
if (gfxcard[0] != 0x01)
dev->jumper |= 0x10;
} else {
dev->jumper = 0x9f;
if (gfxcard[0] != 0x01)
dev->jumper |= 0x40;
@@ -176,3 +192,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
};

View File

@@ -381,6 +381,7 @@ typedef struct hdc_t {
pc_timer_t timer;
int8_t state; /* controller state */
int8_t reset; /* reset state counter */
int8_t ready; /* ready state counter */
/* Data transfer. */
int16_t buf_idx; /* buffer index and pointer */
@@ -723,6 +724,15 @@ hdc_callback(void *priv)
uint8_t cmd = ccb->cmd & 0x0f;
#endif
/* If we are returning from a RESET, handle this first. */
if (dev->reset) {
ps1_hdc_log("XTA reset.\n");
dev->status &= ~ASR_BUSY;
dev->reset = 0;
do_finish(dev);
return;
}
/* Clear the SSB error bits. */
dev->ssb.track_0 = 0;
dev->ssb.cylinder_err = 0;
@@ -754,6 +764,12 @@ hdc_callback(void *priv)
return;
}
if (!(dev->ready | no_data)) {
/* Delay a bit, transfer not ready. */
timer_advance_u64(&dev->timer, HDC_TIME);
return;
}
switch (dev->state) {
case STATE_IDLE:
/* Seek to cylinder if requested. */
@@ -937,9 +953,6 @@ do_send:
break;
case CMD_WRITE_VERIFY:
no_data = 1;
fallthrough;
case CMD_WRITE_SECTORS:
if (!drive->present) {
dev->ssb.not_ready = 1;
@@ -947,6 +960,12 @@ do_send:
return;
}
if (!(dev->ready | no_data)) {
/* Delay a bit, transfer not ready. */
timer_advance_u64(&dev->timer, HDC_TIME);
return;
}
switch (dev->state) {
case STATE_IDLE:
/* Seek to cylinder if requested. */
@@ -1231,24 +1250,21 @@ hdc_write(uint16_t port, uint8_t val, void *priv)
if (val & ACR_INT_EN)
set_intr(dev, 0); /* clear IRQ */
if (dev->reset != 0) {
if (++dev->reset == 3) {
dev->reset = 0;
set_intr(dev, 1);
}
break;
if (val & ACR_RESET) {
dev->reset = 1;
dev->status |= ASR_BUSY;
/* Schedule command execution. */
timer_set_delay_u64(&dev->timer, HDC_TIME);
}
if (val & ACR_RESET)
dev->reset = 1;
break;
case 4: /* ATTN */
dev->status &= ~ASR_INT_REQ;
if (val & ATT_DATA) {
/* Dunno. Start PIO/DMA now? */
}
if (val & ATT_DATA)
dev->ready = 1;
else
dev->ready = 0;
if (val & ATT_SSB) {
if (dev->attn & ATT_CCB) {

View File

@@ -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;

View File

@@ -245,6 +245,7 @@ enum {
MACHINE_CHIPSET_INTEL_430VX,
MACHINE_CHIPSET_INTEL_430TX,
MACHINE_CHIPSET_INTEL_450KX,
MACHINE_CHIPSET_INTEL_450GX,
MACHINE_CHIPSET_INTEL_440FX,
MACHINE_CHIPSET_INTEL_440EX,
MACHINE_CHIPSET_INTEL_440LX,
@@ -353,6 +354,18 @@ typedef struct _machine_ {
void *kbc_device;
#endif /* EMU_DEVICE_H */
uintptr_t kbc_params;
#ifdef EMU_DEVICE_H
const device_t *nvr_device;
#else
void *nvr_device;
#endif /* EMU_DEVICE_H */
uintptr_t nvr_params;
#ifdef EMU_DEVICE_H
const device_t *sio_device;
#else
void *sio_device;
#endif /* EMU_DEVICE_H */
uintptr_t sio_params;
/* Bits 23-16: XOR mask, bits 15-8: OR mask, bits 7-0: AND mask. */
uint32_t kbc_p1;
uint32_t gpio;
@@ -361,7 +374,6 @@ typedef struct _machine_ {
const device_t *device;
const device_t *kbd_device;
const device_t *fdc_device;
const device_t *sio_device;
const device_t *vid_device;
const device_t *snd_device;
const device_t *net_device;
@@ -369,7 +381,6 @@ typedef struct _machine_ {
void *device;
void *kbd_device;
void *fdc_device;
void *sio_device;
void *vid_device;
void *snd_device;
void *net_device;
@@ -394,9 +405,10 @@ extern int machine_get_machine_from_internal_name(const char *s);
extern void machine_init(void);
#ifdef EMU_DEVICE_H
extern const device_t *machine_get_kbc_device(int m);
extern const device_t *machine_get_nvr_device(int m);
extern const device_t *machine_get_sio_device(int m);
extern const device_t *machine_get_device(int m);
extern const device_t *machine_get_fdc_device(int m);
extern const device_t *machine_get_sio_device(int m);
extern const device_t *machine_get_vid_device(int m);
extern const device_t *machine_get_snd_device(int m);
extern const device_t *machine_get_net_device(int m);
@@ -528,6 +540,7 @@ extern int machine_at_px286_init(const machine_t *);
extern int machine_at_ataripc4_init(const machine_t *);
extern int machine_at_neat_ami_init(const machine_t *);
extern int machine_at_3302_init(const machine_t *);
extern int machine_at_n8810m30_init(const machine_t *);
/* SCAMP */
extern int machine_at_pc7286_init(const machine_t *);
@@ -579,6 +592,7 @@ extern int machine_at_shuttle386sx_init(const machine_t *);
/* NEAT */
extern int machine_at_cmdsl386sx16_init(const machine_t *);
extern int machine_at_neat_init(const machine_t *);
extern int machine_at_p3345_init(const machine_t *);
/* NEATsx */
extern int machine_at_if386sx_init(const machine_t *);
@@ -659,12 +673,10 @@ extern const device_t opti495_ami_device;
extern int machine_at_opti495_ami_init(const machine_t *);
/* m_at_common.c */
extern void machine_at_common_init_ex(const machine_t *, int type);
extern void machine_at_common_init(const machine_t *);
extern void machine_at_init(const machine_t *);
extern void machine_at_ps2_init(const machine_t *);
extern void machine_at_common_ide_init(const machine_t *);
extern void machine_at_ibm_common_ide_init(const machine_t *);
extern void machine_at_ide_init(const machine_t *);
extern void machine_at_ps2_ide_init(const machine_t *);
@@ -965,12 +977,12 @@ extern int machine_at_hot539_init(const machine_t *);
/* VLSI SuperCore */
extern int machine_at_bravoms586_init(const machine_t *);
extern int machine_at_g586vpmc_init(const machine_t *);
extern int machine_at_m54si_init(const machine_t *);
extern int machine_at_pb600_init(const machine_t *);
/* VLSI Wildcat */
extern int machine_at_globalyst620_init(const machine_t *);
extern int machine_at_g586vpmc_init(const machine_t *);
/* m_at_socket7_3v.c */
/* i430FX */
@@ -986,6 +998,7 @@ extern const device_t vectra52_device;
extern int machine_at_vectra52_init(const machine_t *);
extern int machine_at_vectra500mt_init(const machine_t *);
extern int machine_at_vectra54_init(const machine_t *);
extern int machine_at_atlantis_init(const machine_t *);
#ifdef EMU_DEVICE_H
extern const device_t thor_device;
#endif
@@ -994,7 +1007,6 @@ extern uint32_t machine_at_monaco_gpio_handler(uint8_t write, uint32_t va
extern int machine_at_monaco_init(const machine_t *);
extern uint32_t machine_at_endeavor_gpio_handler(uint8_t write, uint32_t val);
extern int machine_at_endeavor_init(const machine_t *);
extern int machine_at_atlantis_init(const machine_t *);
#ifdef EMU_DEVICE_H
extern const device_t monaco_device;
#endif
@@ -1177,6 +1189,8 @@ extern int machine_at_5sg100_init(const machine_t *);
/* m_at_socket8.c */
/* i450KX */
extern int machine_at_ap61_init(const machine_t *);
/* i450GX */
#ifdef EMU_DEVICE_H
extern const device_t ficpo6000_device;
#endif
@@ -1521,7 +1535,9 @@ extern int machine_xt_lxt3_init(const machine_t *);
extern int machine_xt_compaq_deskpro_init(const machine_t *);
/* m_xt_ibm5550.c */
#ifdef EMU_DEVICE_H
extern const device_t ibm5550_device;
#endif
extern int machine_xt_ibm5550_init(const machine_t *);
/* m_xt_t1000.c */

View File

@@ -57,6 +57,76 @@
#define TIME_SYNC_ENABLED 1
#define TIME_SYNC_UTC 2
/* Century register for the AT, etc. */
#define RTC_CENTURY_AT 0x32
/* Century register for the PS/1 and the PS/2. */
#define RTC_CENTURY_PS 0x37
/* Century register for the Epson Equity LT. */
#define RTC_CENTURY_ELT 0x1a
/* century register for VIA VT82C586B. */
#define RTC_CENTURY_VIA 0x7f
/* No century register. */
#define RTC_CENTURY_NONE 0xff
#define FLAG_ZERO_DEFAULT 0x0001
#define FLAG_NO_NMI 0x0002
#define FLAG_MULTI_ADDRESS 0x0004
#define FLAG_MULTI_BANK 0x0008
#define FLAG_PIIX4 0x0010
#define FLAG_FIXED_SIZE 0x0020
#define FLAG_MARTIN_HACK 0x0040
#define FLAG_AMI_1992_HACK 0x0080
#define FLAG_AMI_1994_HACK 0x0100
#define FLAG_P6RP4_HACK 0x0200
#define FLAG_AMI_1995_HACK 0x0400
#define FLAG_AMI_1999_HACK 0x0800
#define FLAG_AMI_1999J_HACK 0x1000
#define FLAG_SPITFIRE_HACK 0x2000
#define FLAG_BX6_HACK 0x4000
#define NVR_CENTURY_AT (RTC_CENTURY_AT << 16)
#define NVR_CENTURY_PS (RTC_CENTURY_PS << 16)
#define NVR_CENTURY_VIA (RTC_CENTURY_VIA << 16)
#define NVR_CENTURY_ELT (RTC_CENTURY_ELT << 16)
#define NVR_CENTURY_NONE (0xff << 16)
#define NVR_ADDR_STANDARD (0x0070ULL << 24)
#define NVR_ADDR_ELT (0x11b4ULL << 24)
#define NVR_ADDR_CONFIG (0xfffeULL << 24)
#define NVR_ADDR_NONE (0xffffULL << 24)
#define NVR_IRQ_STANDARD (0x0008ULL << 40)
#define NVR_IRQ_AMSTRAD (0x0001ULL << 40)
#define NVR_IRQ_CONFIG (0xfffeULL << 40)
#define NVR_IRQ_NONE (0xffffULL << 40)
#define NVR_AT_STANDARD NVR_IRQ_STANDARD | NVR_ADDR_STANDARD
#define NVR_AT_STANDARD_MA NVR_AT_STANDARD | FLAG_MULTI_ADDRESS
#define NVR_AT_STANDARD_ZERO NVR_AT_STANDARD | FLAG_ZERO_DEFAULT
#define NVR_AT_OLD (NVR_AT_STANDARD | NVR_CENTURY_NONE)
#define NVR_AT (NVR_AT_STANDARD | NVR_CENTURY_AT)
#define NVR_AT_ZERO_DEFAULT (NVR_AT_STANDARD_ZERO | NVR_CENTURY_AT)
#define NVR_AT_MA (NVR_AT | FLAG_MULTI_ADDRESS)
#define NVR_AT_MA_ZERO (NVR_AT_ZERO_DEFAULT | FLAG_MULTI_ADDRESS)
#define NVR_AT_MB (NVR_AT_ZERO_DEFAULT | FLAG_MULTI_BANK)
#define NVR_PS (NVR_AT_STANDARD_ZERO | NVR_CENTURY_PS)
#define NVR_PS_NO_NMI (NVR_PS | FLAG_NO_NMI)
#define NVR_AMSTRAD (NVR_IRQ_AMSTRAD | NVR_ADDR_STANDARD | NVR_CENTURY_AT)
#define NVR_AMSTRAD_NO_NMI (NVR_AMSTRAD | FLAG_NO_NMI)
#define NVR_PIIX4 (NVR_AT_MA_ZERO | FLAG_PIIX4)
#define NVR_AMI_1992 (NVR_AT_ZERO_DEFAULT | FLAG_AMI_1992_HACK)
#define NVR_AMI_1994 (NVR_AT_ZERO_DEFAULT | FLAG_AMI_1994_HACK)
#define NVR_AMI_1995 (NVR_AT_ZERO_DEFAULT | FLAG_AMI_1995_HACK)
#define NVR_P6RP4 (NVR_AT_MA_ZERO | FLAG_P6RP4_HACK)
#define NVR_PIIX4_AMI_1995 (NVR_PIIX4 | FLAG_AMI_1999_HACK)
#define NVR_PIIX4_AMI_1995J (NVR_PIIX4 | FLAG_AMI_1999J_HACK)
#define NVR_VIA (NVR_AT_STANDARD_MA | NVR_CENTURY_VIA)
#define NVR_MARTIN (NVR_AT_MB | FLAG_MARTIN_HACK)
#define NVR_ELT (NVR_IRQ_NONE | NVR_ADDR_ELT | NVR_CENTURY_ELT)
#define NVR_RTC8088 (NVR_IRQ_CONFIG | NVR_ADDR_CONFIG | \
NVR_CENTURY_ALT | FLAG_NO_NMI | FLAG_FIXED_SIZE)
#ifdef _TIMER_H_
/* Define a generic RTC/NVRAM device. */
typedef struct _nvr_ {
@@ -80,26 +150,9 @@ typedef struct _nvr_ {
} nvr_t;
extern int nvr_dosave;
#ifdef EMU_DEVICE_H
extern const device_t at_nvr_old_device;
extern const device_t at_nvr_device;
extern const device_t at_mb_nvr_device;
extern const device_t ps_nvr_device;
extern const device_t amstrad_nvr_device;
extern const device_t amstrad_megapc_nvr_device;
extern const device_t ibmat_nvr_device;
extern const device_t piix4_nvr_device;
extern const device_t ps_no_nmi_nvr_device;
extern const device_t amstrad_no_nmi_nvr_device;
extern const device_t ami_1992_nvr_device;
extern const device_t ami_1994_nvr_device;
extern const device_t ami_1995_nvr_device;
extern const device_t via_nvr_device;
extern const device_t piix4_ami_1995_nvr_device;
extern const device_t piix4_ami_1995j_nvr_device;
extern const device_t p6rp4_nvr_device;
extern const device_t martin_nvr_device;
extern const device_t elt_nvr_device;
extern const device_t nvr_at_device;
#endif
extern void rtc_tick(void);

View File

@@ -31,6 +31,43 @@
#define PCI_REG_LATENCY_TIMER 0x0d
#define PCI_REG_HEADER_TYPE 0x0e
#define PCI_REG_BIST 0x0f
#define PCI_REG_BAR0_BYTE0 0x10
#define PCI_REG_BAR0_BYTE1 0x11
#define PCI_REG_BAR0_BYTE2 0x12
#define PCI_REG_BAR0_BYTE3 0x13
#define PCI_REG_BAR1_BYTE0 0x14
#define PCI_REG_BAR1_BYTE1 0x15
#define PCI_REG_BAR1_BYTE2 0x16
#define PCI_REG_BAR1_BYTE3 0x17
#define PCI_REG_BAR2_BYTE0 0x18
#define PCI_REG_BAR2_BYTE1 0x19
#define PCI_REG_BAR2_BYTE2 0x1a
#define PCI_REG_BAR2_BYTE3 0x1b
#define PCI_REG_BAR3_BYTE0 0x1c
#define PCI_REG_BAR3_BYTE1 0x1d
#define PCI_REG_BAR3_BYTE2 0x1e
#define PCI_REG_BAR3_BYTE3 0x1e
#define PCI_REG_BAR4_BYTE0 0x20
#define PCI_REG_BAR4_BYTE1 0x21
#define PCI_REG_BAR4_BYTE2 0x22
#define PCI_REG_BAR4_BYTE3 0x23
#define PCI_REG_BAR5_BYTE0 0x24
#define PCI_REG_BAR5_BYTE1 0x25
#define PCI_REG_BAR5_BYTE2 0x26
#define PCI_REG_BAR5_BYTE3 0x27
#define PCI_REG_SUBVEN_ID_L 0x2c
#define PCI_REG_SUBVEN_ID_H 0x2d
#define PCI_REG_SUBSYS_ID_L 0x2e
#define PCI_REG_SUBSYS_ID_H 0x2f
#define PCI_REG_ROM_BAR_BYTE0 0x30
#define PCI_REG_ROM_BAR_BYTE1 0x31
#define PCI_REG_ROM_BAR_BYTE2 0x32
#define PCI_REG_ROM_BAR_BYTE3 0x33
#define PCI_REG_CAPS_PTR 0x34
#define PCI_REG_INT_LINE 0x3c
#define PCI_REG_INT_PIN 0x3d
#define PCI_REG_MIN_GRANT 0x3e
#define PCI_REG_MAX_LAT 0x3f
#define PCI_COMMAND_L_IO 0x01
#define PCI_COMMAND_L_MEM 0x02

View File

@@ -84,6 +84,7 @@ typedef struct ncr_t {
int (*dma_send_ext)(void *priv, void *ext_priv);
int (*dma_initiator_receive_ext)(void *priv, void *ext_priv);
void (*timer)(void *ext_priv, double period);
int (*irq_ena)(void *priv, void *ext_priv, int state);
scsi_bus_t scsibus;
} ncr_t;

View File

@@ -0,0 +1,19 @@
/*
* 86Box A hypervisor and IBM PC system emulator that specializes in
* running old operating systems and software designed for IBM
* PC systems and compatibles from 1981 through fairly recent
* system designs based on the PCI bus.
*
* Emulation of QLogic QLA1x40/QLA1x80/QLA1x160 SCSI HBA.
*
* Authors: Dmitry Borisov, <di.sean@protonmail.com>
*
* Copyright 2026 Dmitry Borisov
*/
#pragma once
extern const device_t qla1040b_device;
extern const device_t qla1080_device;
extern const device_t qla1240_device;
extern const device_t qla1280_device;
extern const device_t qla12160a_device;

View File

@@ -15,7 +15,7 @@
*
* Copyright 2008-2018 Sarah Walker.
* Copyright 2016-2018 Miran Grca.
* Copyright 2024-2025 Jasmine Iwanek.
* Copyright 2024-2026 Jasmine Iwanek.
*/
#ifndef SOUND_SND_SB_H
#define SOUND_SND_SB_H
@@ -28,12 +28,14 @@
enum {
SADLIB = 1, /* No DSP */
SB_DSP_105, /* DSP v1.05, Original CT1320 (Also known as CT1310) */
SB_DSP_103, /* DSP v1.03, "killer card" prototype (Also known as CT1310) */
SB_DSP_105, /* DSP v1.05, Original CT1320 */
SB_DSP_200, /* DSP v2.00 */
SB_DSP_201, /* DSP v2.01 - needed for high-speed DMA, Seen on CT1350B with CT1336 */
SB_DSP_202, /* DSP v2.02 - Seen on CT1350B with CT1336A */
SBPRO_DSP_300, /* DSP v3.00 */
SBPRO2_DSP_302, /* DSP v3.02 + OPL3 */
SBPRO_DSP_301, /* DSP v3.01 */
SBPRO_DSP_302, /* DSP v3.02 */
SB16_DSP_404, /* DSP v4.05 + OPL3 */
SB16_DSP_405, /* DSP v4.05 + OPL3 */
SB16_DSP_406, /* DSP v4.06 + OPL3 */

View File

@@ -9,8 +9,9 @@
#define SB_SUBTYPE_CLONE_AZT1605_0X0C 2 /* Aztech Sound Galaxy Nova 16 Extra /
Packard Bell Forte 16, DSP 2.1 - SBPRO2 clone */
#define SB_SUBTYPE_CLONE_AZTPR16_0X09 3 /* Aztech Sound Galaxy Pro 16 Extra */
#define SB_SUBTYPE_ESS_ES688 4 /* ESS Technology ES688 */
#define SB_SUBTYPE_ESS_ES1688 5 /* ESS Technology ES1688 */
#define SB_SUBTYPE_MVD201 4 /* Mediavision MVD201, found on the thunderboard and PAS16 */
#define SB_SUBTYPE_ESS_ES688 5 /* ESS Technology ES688 */
#define SB_SUBTYPE_ESS_ES1688 6 /* ESS Technology ES1688 */
/* ESS-related */
#define IS_ESS(dsp) ((dsp)->sb_subtype >= SB_SUBTYPE_ESS_ES688) /* Check for future ESS cards here */
@@ -20,6 +21,9 @@
#define IS_AZTECH(dsp) ((dsp)->sb_subtype == SB_SUBTYPE_CLONE_AZT2316A_0X11 || (dsp)->sb_subtype == SB_SUBTYPE_CLONE_AZT1605_0X0C || (dsp)->sb_subtype == SB_SUBTYPE_CLONE_AZTPR16_0X09) /* check for future AZT cards here */
#define AZTECH_EEPROM_SIZE 36
/* MediaVision related */
#define IS_MV201(dsp) ((dsp)->sb_subtype >= SB_SUBTYPE_MVD201)
typedef struct sb_dsp_t {
int sb_type;
int sb_subtype; /* which clone */
@@ -102,6 +106,7 @@ typedef struct sb_dsp_t {
int sbreset;
uint8_t sbreaddat;
uint8_t sb_command;
uint8_t sb_last_command;
uint8_t sb_test;
int sb_timei;
int sb_timeo;

View File

@@ -228,6 +228,9 @@ extern const device_t entertainer_device;
/* Mindscape Music Board */
extern const device_t mmb_device;
/* MediaVision ThunderBoard */
extern const device_t thunderboard_device;
/* OPTi 82c93x */
extern const device_t acermagic_s20_device;
extern const device_t mirosound_pcm10_device;

View File

@@ -65,6 +65,7 @@ typedef union {
typedef struct ibm8514_t {
rom_t bios_rom;
rom_t bios_rom2;
uint8_t *rom1;
uint8_t *rom2;
hwcursor8514_t hwcursor;
@@ -187,6 +188,7 @@ typedef struct ibm8514_t {
uint32_t dst_ge_offset;
uint16_t src_pitch;
uint16_t dst_pitch;
uint16_t read_pixel;
int64_t cur_x_24bpp;
int64_t cur_y_24bpp;
int64_t dest_x_24bpp;

View File

@@ -1300,7 +1300,7 @@ voodoo_generate(uint8_t *code_block, voodoo_t *voodoo, voodoo_params_t *params,
addbyte(0x35); /*XOR EAX, 0xff*/
addlong(0xff);
}
addbyte(0x8e); /*ADD EAX, 1*/
addbyte(0x83); /*ADD EAX, 1*/
addbyte(0xc0);
addbyte(1);
addbyte(0x0f); /*IMUL EAX, EBX*/
@@ -2327,7 +2327,7 @@ voodoo_generate(uint8_t *code_block, voodoo_t *voodoo, voodoo_params_t *params,
addlong(offsetof(voodoo_state_t, z));
addbyte(0xc1); /*SHR EAX, 12*/
addbyte(0xe8);
addbyte(12);
addbyte(20);
addbyte(0x25); /*AND EAX, 0xff*/
addlong(0xff);
#if 0

View File

@@ -375,6 +375,7 @@ extern const device_t gd5401_isa_device;
extern const device_t gd5401_onboard_device;
extern const device_t gd5402_isa_device;
extern const device_t gd5402_onboard_device;
extern const device_t gd5402_onboard_commodore_device;
extern const device_t gd5420_isa_device;
extern const device_t gd5420_onboard_device;
extern const device_t gd5422_isa_device;
@@ -383,9 +384,11 @@ extern const device_t gd5424_onboard_device;
extern const device_t gd5426_isa_device;
extern const device_t gd5426_diamond_speedstar_pro_a1_isa_device;
extern const device_t gd5426_vlb_device;
extern const device_t gd5426_onboard_isa_device;
extern const device_t gd5426_onboard_device;
extern const device_t gd5428_isa_device;
extern const device_t gd5428_vlb_onboard_device;
extern const device_t gd5428_vlb_onboard_tandy_device;
extern const device_t gd5428_vlb_device;
extern const device_t gd5428_diamond_speedstar_pro_b1_vlb_device;
extern const device_t gd5428_boca_isa_device;

View File

@@ -2971,17 +2971,6 @@ machine_amstrad_init(const machine_t *model, int type)
ams->type = type;
amstrad_latch = 0x80000000;
switch (type) {
case AMS_PC200:
case AMS_PPC512:
device_add(&amstrad_no_nmi_nvr_device);
break;
default:
device_add(&amstrad_nvr_device);
break;
}
machine_common_init(model);
nmi_init();

View File

@@ -140,7 +140,7 @@ const device_t ibmat_device = {
static void
machine_at_ibm_common_init(const machine_t *model)
{
machine_at_common_init_ex(model, 1);
machine_at_common_init(model);
device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params);
@@ -510,8 +510,7 @@ machine_at_m290_init(const machine_t *model)
if (bios_only || !ret)
return ret;
machine_at_common_init_ex(model, 6);
device_add(&amstrad_megapc_nvr_device);
machine_at_common_init(model);
device_add(&olivetti_eva_device);
device_add(&port_6x_olivetti_device);
@@ -630,7 +629,7 @@ machine_at_siemens_init(const machine_t *model)
if (bios_only || !ret)
return ret;
machine_at_common_init_ex(model, 1);
machine_at_common_init(model);
device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params);
@@ -923,6 +922,29 @@ machine_at_3302_init(const machine_t *model)
return ret;
}
int
machine_at_n8810m30_init(const machine_t *model) /* Onboard SCSI not yet emulated */
{
int ret;
ret = bios_load_linear("roms/machines/n8810m30/at286bios_53889.00.0.17jr.BIN",
0x000e0000, 131072, 0);
if (bios_only || !ret)
return ret;
machine_at_common_init(model);
device_add(&neat_device);
if (fdc_current[0] == FDC_INTERNAL)
device_add(&fdc_at_device);
device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params);
return ret;
}
/* SCAMP */
int
machine_at_pc7286_init(const machine_t *model)
@@ -935,7 +957,7 @@ machine_at_pc7286_init(const machine_t *model)
if (bios_only || !ret)
return ret;
machine_at_common_init_ex(model, 2);
machine_at_common_init(model);
if (gfxcard[0] == VID_INTERNAL)
device_add(machine_get_vid_device(machine));

View File

@@ -272,7 +272,7 @@ machine_at_spc6000a_init(const machine_t *model)
if (bios_only || !ret)
return ret;
machine_at_common_init_ex(model, 1);
machine_at_common_init(model);
device_add(&cs8230_device);

View File

@@ -409,8 +409,7 @@ machine_at_adi386sx_init(const machine_t *model)
if (bios_only || !ret)
return ret;
machine_at_common_init_ex(model, 2);
device_add(&amstrad_megapc_nvr_device); /* NVR that is initialized to all 0x00's. */
machine_at_common_init(model);
device_add(&intel_82335_device);
device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params);
@@ -494,6 +493,31 @@ machine_at_neat_init(const machine_t *model)
return ret;
}
int
machine_at_p3345_init(const machine_t *model)
{
int ret;
ret = bios_load_interleaved("roms/machines/p3345/BIOS_EVEN.BIN",
"roms/machines/p3345/BIOS_ODD.BIN",
0x000f0000, 65536, 0);
if (bios_only || !ret)
return ret;
machine_at_common_init(model);
device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params);
device_add(&neat_device);
device_add(&ide_isa_device);
if (fdc_current[0] == FDC_INTERNAL)
device_add(&fdc_at_device);
return ret;
}
/* NEATsx */
int
machine_at_if386sx_init(const machine_t *model)
@@ -507,8 +531,7 @@ machine_at_if386sx_init(const machine_t *model)
if (bios_only || !ret)
return ret;
machine_at_common_init_ex(model, 2);
device_add(&amstrad_megapc_nvr_device); /* NVR that is initialized to all 0x00's. */
machine_at_common_init(model);
device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params);
@@ -586,9 +609,9 @@ machine_at_cmdsl386sx25_init(const machine_t *model)
return ret;
if (gfxcard[0] == VID_INTERNAL)
device_add(&gd5402_onboard_device);
device_add(&gd5402_onboard_commodore_device);
machine_at_common_init_ex(model, 2);
machine_at_common_init(model);
device_add(&ide_isa_device);
@@ -700,7 +723,7 @@ machine_at_dells333sl_init(const machine_t *model)
if (gfxcard[0] == VID_INTERNAL)
device_add(machine_get_vid_device(machine));
machine_at_common_init_ex(model, 2);
machine_at_common_init(model);
device_add(&ide_isa_device);
@@ -774,7 +797,7 @@ machine_at_wd76c10_init(const machine_t *model)
if (bios_only || !ret)
return ret;
machine_at_common_init_ex(model, 2);
machine_at_common_init(model);
if (gfxcard[0] == VID_INTERNAL)
device_add(machine_get_vid_device(machine));

View File

@@ -60,7 +60,7 @@ machine_at_itoxstar_init(const machine_t *model)
if (bios_only || !ret)
return ret;
machine_at_common_init_ex(model, 2);
machine_at_common_init(model);
pci_init(PCI_CONFIG_TYPE_1);
pci_register_slot(0x0B, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0);
@@ -90,7 +90,7 @@ machine_at_arb1423c_init(const machine_t *model)
if (bios_only || !ret)
return ret;
machine_at_common_init_ex(model, 2);
machine_at_common_init(model);
pci_init(PCI_CONFIG_TYPE_1);
pci_register_slot(0x0B, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0);
@@ -117,7 +117,7 @@ machine_at_arb1479_init(const machine_t *model)
if (bios_only || !ret)
return ret;
machine_at_common_init_ex(model, 2);
machine_at_common_init(model);
pci_init(PCI_CONFIG_TYPE_1);
pci_register_slot(0x0B, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0);
@@ -144,7 +144,7 @@ machine_at_iach488_init(const machine_t *model)
if (bios_only || !ret)
return ret;
machine_at_common_init_ex(model, 2);
machine_at_common_init(model);
pci_init(PCI_CONFIG_TYPE_1);
pci_register_slot(0x0B, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0);
@@ -169,7 +169,7 @@ machine_at_pcm9340_init(const machine_t *model)
if (bios_only || !ret)
return ret;
machine_at_common_init_ex(model, 2);
machine_at_common_init(model);
pci_init(PCI_CONFIG_TYPE_1);
pci_register_slot(0x0B, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0);
@@ -198,7 +198,7 @@ machine_at_pcm5330_init(const machine_t *model)
if (bios_only || !ret)
return ret;
machine_at_common_init_ex(model, 2);
machine_at_common_init(model);
pci_init(PCI_CONFIG_TYPE_1);
pci_register_slot(0x0B, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0);

View File

@@ -61,7 +61,7 @@
#include <86box/machine.h>
void
machine_at_common_init_ex(const machine_t *model, int type)
machine_at_common_init(const machine_t *model)
{
machine_common_init(model);
@@ -70,24 +70,12 @@ machine_at_common_init_ex(const machine_t *model, int type)
pic2_init();
dma16_init();
if (!(type & 4))
if (model->init != machine_at_m290_init)
device_add(&port_6x_device);
type &= 3;
if (type == 1)
device_add(&ibmat_nvr_device);
else if (type == 0)
device_add(&at_nvr_device);
standalone_gameport_type = &gameport_device;
}
void
machine_at_common_init(const machine_t *model)
{
machine_at_common_init_ex(model, 0);
}
void
machine_at_init(const machine_t *model)
{
@@ -112,14 +100,6 @@ machine_at_common_ide_init(const machine_t *model)
device_add(&ide_isa_device);
}
void
machine_at_ibm_common_ide_init(const machine_t *model)
{
machine_at_common_init_ex(model, 1);
device_add(&ide_isa_device);
}
void
machine_at_ide_init(const machine_t *model)
{

View File

@@ -47,7 +47,7 @@ machine_at_vpc2007_init(const machine_t *model)
if (bios_only || !ret)
return ret;
machine_at_common_init_ex(model, 2);
machine_at_common_init(model);
is_vpc = 1;
pci_init(PCI_CONFIG_TYPE_1);

View File

@@ -50,7 +50,7 @@ machine_at_m729_init(const machine_t *model)
if (bios_only || !ret)
return ret;
machine_at_common_init_ex(model, 2);
machine_at_common_init(model);
pci_init(PCI_CONFIG_TYPE_1);
pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0);
@@ -83,7 +83,7 @@ machine_at_acerv62x_init(const machine_t *model)
if (bios_only || !ret)
return ret;
machine_at_common_init_ex(model, 2);
machine_at_common_init(model);
pci_init(PCI_CONFIG_TYPE_1);
pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0);
@@ -220,7 +220,7 @@ machine_at_lx6_init(const machine_t *model)
ret = bios_load_linear(fn, 0x000e0000, 131072, 0);
device_context_restore();
machine_at_common_init_ex(model, 2);
machine_at_common_init(model);
pci_init(PCI_CONFIG_TYPE_1);
pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0);
@@ -251,7 +251,7 @@ machine_at_optiplexgxa_init(const machine_t *model)
if (bios_only || !ret)
return ret;
machine_at_common_init_ex(model, 2);
machine_at_common_init(model);
pci_init(PCI_CONFIG_TYPE_1);
pci_register_slot(0x07, PCI_CARD_SOUTHBRIDGE, 0, 0, 0, 4);
@@ -442,7 +442,7 @@ machine_at_ms6117_init(const machine_t *model)
if (bios_only || !ret)
return ret;
machine_at_common_init_ex(model, 2);
machine_at_common_init(model);
pci_init(PCI_CONFIG_TYPE_1);
pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0);
@@ -479,7 +479,7 @@ machine_at_ma30d_init(const machine_t *model)
if (bios_only || !ret)
return ret;
machine_at_common_init_ex(model, 2);
machine_at_common_init(model);
pci_init(PCI_CONFIG_TYPE_1);
pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0);
@@ -516,7 +516,7 @@ machine_at_brio83xx_init(const machine_t *model)
if (bios_only || !ret)
return ret;
machine_at_common_init_ex(model, 2);
machine_at_common_init(model);
pci_init(PCI_CONFIG_TYPE_1);
// Actual settings!
@@ -610,7 +610,7 @@ machine_at_como_init(const machine_t *model)
ret = bios_load_linear(fn, 0x000c0000, 262144, 0);
device_context_restore();
machine_at_common_init_ex(model, 2);
machine_at_common_init(model);
pci_init(PCI_CONFIG_TYPE_1);
pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0);
@@ -643,7 +643,7 @@ machine_at_p6i440e2_init(const machine_t *model)
if (bios_only || !ret)
return ret;
machine_at_common_init_ex(model, 2);
machine_at_common_init(model);
pci_init(PCI_CONFIG_TYPE_1);
pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0);
@@ -676,7 +676,7 @@ machine_at_bf6_init(const machine_t *model)
if (bios_only || !ret)
return ret;
machine_at_common_init_ex(model, 2);
machine_at_common_init(model);
pci_init(PCI_CONFIG_TYPE_1);
pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0);
@@ -792,7 +792,7 @@ machine_at_bx6_init(const machine_t *model)
ret = bios_load_linear(fn, 0x000e0000, 131072, 0);
device_context_restore();
machine_at_common_init_ex(model, 2);
machine_at_common_init(model);
pci_init(PCI_CONFIG_TYPE_1);
pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0);
@@ -823,7 +823,7 @@ machine_at_p2bls_init(const machine_t *model)
if (bios_only || !ret)
return ret;
machine_at_common_init_ex(model, 2);
machine_at_common_init(model);
pci_init(PCI_CONFIG_TYPE_1);
pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0);
@@ -862,7 +862,7 @@ machine_at_p3bf_init(const machine_t *model)
if (bios_only || !ret)
return ret;
machine_at_common_init_ex(model, 2);
machine_at_common_init(model);
pci_init(PCI_CONFIG_TYPE_1);
pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0);
@@ -962,7 +962,7 @@ machine_at_ax6bc_init(const machine_t *model)
ret = bios_load_linear(fn, 0x000c0000, 262144, 0);
device_context_restore();
machine_at_common_init_ex(model, 2);
machine_at_common_init(model);
pci_init(PCI_CONFIG_TYPE_1);
pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0);
@@ -1059,7 +1059,7 @@ machine_at_ga686_init(const machine_t *model)
ret = bios_load_linear(fn, 0x000c0000, 262144, 0);
device_context_restore();
machine_at_common_init_ex(model, 2);
machine_at_common_init(model);
pci_init(PCI_CONFIG_TYPE_1);
pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0);
@@ -1178,7 +1178,7 @@ machine_at_ms6119_init(const machine_t *model)
ret = bios_load_linear(fn, 0x000c0000, 262144, 0);
device_context_restore();
machine_at_common_init_ex(model, 2);
machine_at_common_init(model);
pci_init(PCI_CONFIG_TYPE_1);
pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0);
@@ -1273,7 +1273,7 @@ machine_at_ms6147_init(const machine_t *model)
ret = bios_load_linear(fn, 0x000c0000, 262144, 0);
device_context_restore();
machine_at_common_init_ex(model, 2);
machine_at_common_init(model);
pci_init(PCI_CONFIG_TYPE_1);
pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0);
@@ -1363,7 +1363,7 @@ machine_at_p6sba_init(const machine_t *model)
ret = bios_load_linear(fn, 0x000c0000, 262144, 0);
device_context_restore();
machine_at_common_init_ex(model, 2);
machine_at_common_init(model);
pci_init(PCI_CONFIG_TYPE_1);
pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0);
@@ -1453,7 +1453,7 @@ machine_at_s1846_init(const machine_t *model)
ret = bios_load_linear(fn, 0x000c0000, 262144, 0);
device_context_restore();
machine_at_common_init_ex(model, 2);
machine_at_common_init(model);
pci_init(PCI_CONFIG_TYPE_1);
pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0);
@@ -1556,7 +1556,7 @@ machine_at_vei8_init(const machine_t *model)
ret = bios_load_linear(fn, 0x000c0000, 262144, 0);
device_context_restore();
machine_at_common_init_ex(model, 2);
machine_at_common_init(model);
pci_init(PCI_CONFIG_TYPE_1);
pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0);
@@ -1580,7 +1580,7 @@ machine_at_vei8_init(const machine_t *model)
static void
machine_at_ms6168_common_init(const machine_t *model)
{
machine_at_common_init_ex(model, 2);
machine_at_common_init(model);
pci_init(PCI_CONFIG_TYPE_1);
pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0);
@@ -1651,7 +1651,7 @@ machine_at_atc6310bxii_init(const machine_t *model)
if (bios_only || !ret)
return ret;
machine_at_common_init_ex(model, 2);
machine_at_common_init(model);
pci_init(PCI_CONFIG_TYPE_1);
pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0);
@@ -1683,7 +1683,7 @@ machine_at_ficka6130_init(const machine_t *model)
if (bios_only || !ret)
return ret;
machine_at_common_init_ex(model, 2);
machine_at_common_init(model);
pci_init(PCI_CONFIG_TYPE_1);
pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0);
@@ -1715,7 +1715,7 @@ machine_at_p3v133_init(const machine_t *model)
if (bios_only || !ret)
return ret;
machine_at_common_init_ex(model, 2);
machine_at_common_init(model);
pci_init(PCI_CONFIG_TYPE_1);
pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0);
@@ -1825,7 +1825,7 @@ machine_at_ms6199va_init(const machine_t *model)
ret = bios_load_linear(fn, 0x000c0000, 262144, 0);
device_context_restore();
machine_at_common_init_ex(model, 2);
machine_at_common_init(model);
pci_init(PCI_CONFIG_TYPE_1);
pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0);
@@ -1866,7 +1866,7 @@ machine_at_p3v4x_init(const machine_t *model)
if (bios_only || !ret)
return ret;
machine_at_common_init_ex(model, 2);
machine_at_common_init(model);
pci_init(PCI_CONFIG_TYPE_1);
pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0);
@@ -1901,7 +1901,7 @@ machine_at_gt694va_init(const machine_t *model)
if (bios_only || !ret)
return ret;
machine_at_common_init_ex(model, 2);
machine_at_common_init(model);
pci_init(PCI_CONFIG_TYPE_1);
pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0);
@@ -1944,7 +1944,7 @@ machine_at_p6f99_init(const machine_t *model)
if (bios_only || !ret)
return ret;
machine_at_common_init_ex(model, 2);
machine_at_common_init(model);
pci_init(PCI_CONFIG_TYPE_1 | FLAG_TRC_CONTROLS_CPURST);
pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0);
@@ -1979,7 +1979,7 @@ machine_at_m747_init(const machine_t *model)
if (bios_only || !ret)
return ret;
machine_at_common_init_ex(model, 2);
machine_at_common_init(model);
pci_init(PCI_CONFIG_TYPE_1 | FLAG_TRC_CONTROLS_CPURST);
pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0);

View File

@@ -51,7 +51,7 @@ machine_at_fw6400gx_init(const machine_t *model)
if (bios_only || !ret)
return ret;
machine_at_common_init_ex(model, 2);
machine_at_common_init(model);
pci_init(PCI_CONFIG_TYPE_1);
pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0);

View File

@@ -114,7 +114,7 @@ machine_at_prosignias31x_bx_init(const machine_t *model)
ret = bios_load_linear(fn, 0x000c0000, 262144, 0);
device_context_restore();
machine_at_common_init_ex(model, 2);
machine_at_common_init(model);
pci_init(PCI_CONFIG_TYPE_1);
pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0);
@@ -154,7 +154,7 @@ machine_at_s1857_init(const machine_t *model)
if (bios_only || !ret)
return ret;
machine_at_common_init_ex(model, 2);
machine_at_common_init(model);
pci_init(PCI_CONFIG_TYPE_1);
pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0);
@@ -193,7 +193,7 @@ machine_at_p6bat_init(const machine_t *model)
if (bios_only || !ret)
return ret;
machine_at_common_init_ex(model, 2);
machine_at_common_init(model);
pci_init(PCI_CONFIG_TYPE_1);
pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0);

View File

@@ -50,7 +50,7 @@ machine_at_6gxu_init(const machine_t *model)
if (bios_only || !ret)
return ret;
machine_at_common_init_ex(model, 2);
machine_at_common_init(model);
pci_init(PCI_CONFIG_TYPE_1);
pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0);
@@ -85,7 +85,7 @@ machine_at_s2dge_init(const machine_t *model)
if (bios_only || !ret)
return ret;
machine_at_common_init_ex(model, 2);
machine_at_common_init(model);
pci_init(PCI_CONFIG_TYPE_1);
pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0);

View File

@@ -294,15 +294,17 @@ machine_at_vect486vl_init(const machine_t *model) // has HDC problems
int ret;
ret = bios_load_linear("roms/machines/vect486vl/aa0500.ami",
0x000e0000, 131072, 0);
0x000c0000, 262144, 0);
if (bios_only || !ret)
return ret;
memcpy(&rom[0x00020000], rom, 131072);
if (gfxcard[0] == VID_INTERNAL)
device_add(machine_get_vid_device(machine));
machine_at_common_init_ex(model, 2);
machine_at_common_init(model);
device_add(&vl82c480_device);
@@ -311,6 +313,15 @@ machine_at_vect486vl_init(const machine_t *model) // has HDC problems
device_add(&ide_isa_device);
device_add_params(&fdc37c6xx_device, (void *) (FDC37C651 | FDC37C6XX_IDE_PRI));
video_reset(gfxcard[0]);
if (gfxcard[0] != VID_INTERNAL) {
for (uint16_t i = 0; i < 32768; i++)
rom[i] = mem_readb_phys(0x000c0000 + i);
}
mem_mapping_set_addr(&bios_mapping, 0x0c0000, 0x40000);
mem_mapping_set_exec(&bios_mapping, rom);
return ret;
}
@@ -321,15 +332,17 @@ machine_at_d824_init(const machine_t *model)
int ret;
ret = bios_load_linear("roms/machines/d824/fts-biosupdated824noflashbiosepromv320-320334-160.bin",
0x000e0000, 131072, 0);
0x000c0000, 262144, 0);
if (bios_only || !ret)
return ret;
memcpy(&rom[0x00020000], rom, 131072);
if (gfxcard[0] == VID_INTERNAL)
device_add(machine_get_vid_device(machine));
machine_at_common_init_ex(model, 2);
machine_at_common_init(model);
device_add(&vl82c480_device);
@@ -342,6 +355,15 @@ machine_at_d824_init(const machine_t *model)
device_add(&ide_isa_device);
device_add_params(&fdc37c6xx_device, (void *) FDC37C651);
video_reset(gfxcard[0]);
if (gfxcard[0] != VID_INTERNAL) {
for (uint16_t i = 0; i < 32768; i++)
rom[i] = mem_readb_phys(0x000c0000 + i);
}
mem_mapping_set_addr(&bios_mapping, 0x0c0000, 0x40000);
mem_mapping_set_exec(&bios_mapping, rom);
return ret;
}
@@ -357,7 +379,7 @@ machine_at_pcs44c_init(const machine_t *model)
if (bios_only || !ret)
return ret;
machine_at_common_init_ex(model, 2);
machine_at_common_init(model);
device_add(&vl82c486_device);
device_add(&tulip_jumper_device);
@@ -415,7 +437,7 @@ machine_at_tuliptc38_init(const machine_t *model)
if (bios_only || !ret)
return ret;
machine_at_common_init_ex(model, 2);
machine_at_common_init(model);
device_add(&vl82c486_device);
device_add(&tulip_jumper_device);

View File

@@ -61,7 +61,7 @@ machine_at_pb410a_init(const machine_t *model)
if (bios_only || !ret)
return ret;
machine_at_ibm_common_ide_init(model);
machine_at_common_ide_init(model);
device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params);
@@ -199,8 +199,7 @@ machine_at_g486ip_init(const machine_t *model)
if (bios_only || !ret)
return ret;
machine_at_common_init_ex(model, 2);
device_add(&ami_1992_nvr_device);
machine_at_common_init(model);
pci_init(PCI_CONFIG_TYPE_1);
pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0);
@@ -380,7 +379,7 @@ machine_at_monsoon_init(const machine_t *model)
if (bios_only || !ret)
return ret;
machine_at_common_init_ex(model, 2);
machine_at_common_init(model);
device_add(&vl82c480_device);
device_add(&vl82c113_device);
@@ -389,6 +388,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));
@@ -407,7 +407,7 @@ machine_at_martin_init(const machine_t *model)
if (bios_only || !ret)
return ret;
machine_at_common_init_ex(model, 2);
machine_at_common_init(model);
device_add(&vl82c480_device);
device_add(&vl82c113_device);

View File

@@ -105,15 +105,14 @@ machine_at_ap4100aa_init(const machine_t *model)
if (bios_only || !ret)
return ret;
machine_at_common_init_ex(model, 2);
machine_at_common_init(model);
device_add(&ami_1994_nvr_device);
device_add(&ali1429g_device);
device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params);
device_add(&ide_vlb_device);
device_add_params(&um866x_device, (void *) UM8663BF);
device_add_params(&um866x_device, (void *) (uintptr_t) UM8663BF);
return ret;
}
@@ -265,11 +264,8 @@ machine_at_403tg_init(const machine_t *model)
fn = device_get_bios_file(machine_get_device(machine), device_get_config_bios("bios"), 0);
ret = bios_load_linear(fn, 0x000f0000, 65536, 0);
if (nvr_hack) {
machine_at_common_init_ex(model, 2);
device_add(&ami_1994_nvr_device);
} else
machine_at_common_init(model);
machine_at_common_init(model);
device_add_params(&nvr_at_device, (void *) (uintptr_t) (nvr_hack ? (NVR_AMI_1994) : (NVR_AT)));
device_add(&opti895_device);
@@ -482,8 +478,7 @@ machine_at_tg486g_init(const machine_t *model)
if (bios_only || !ret)
return ret;
machine_at_common_init_ex(model, 2);
device_add(&amstrad_megapc_nvr_device);
machine_at_common_init(model);
device_add(&sis_85c471_device);
device_add(&ide_isa_device);
device_add_params(&fdc37c6xx_device, (void *) (FDC37C651 | FDC37C6XX_IDE_PRI));

View File

@@ -50,7 +50,7 @@ machine_at_s370slm_init(const machine_t *model)
if (bios_only || !ret)
return ret;
machine_at_common_init_ex(model, 2);
machine_at_common_init(model);
pci_init(PCI_CONFIG_TYPE_1);
pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0);
@@ -85,7 +85,7 @@ machine_at_awo671r_init(const machine_t *model)
if (bios_only || !ret)
return ret;
machine_at_common_init_ex(model, 2);
machine_at_common_init(model);
pci_init(PCI_CONFIG_TYPE_1);
pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0);
@@ -120,7 +120,7 @@ machine_at_ambx133_init(const machine_t *model)
if (bios_only || !ret)
return ret;
machine_at_common_init_ex(model, 2);
machine_at_common_init(model);
pci_init(PCI_CONFIG_TYPE_1);
pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0);
@@ -156,7 +156,7 @@ machine_at_cubx_init(const machine_t *model)
if (bios_only || !ret)
return ret;
machine_at_common_init_ex(model, 2);
machine_at_common_init(model);
pci_init(PCI_CONFIG_TYPE_1);
pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0);
@@ -194,7 +194,7 @@ machine_at_63a1_init(const machine_t *model)
if (bios_only || !ret)
return ret;
machine_at_common_init_ex(model, 2);
machine_at_common_init(model);
pci_init(PCI_CONFIG_TYPE_1);
pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0);
@@ -227,7 +227,7 @@ machine_at_7sbb_init(const machine_t *model)
if (bios_only || !ret)
return ret;
machine_at_common_init_ex(model, 2);
machine_at_common_init(model);
pci_init(PCI_CONFIG_TYPE_1 | FLAG_TRC_CONTROLS_CPURST);
pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0);
@@ -256,7 +256,7 @@ machine_at_atc7020bxii_init(const machine_t *model)
if (bios_only || !ret)
return ret;
machine_at_common_init_ex(model, 2);
machine_at_common_init(model);
pci_init(PCI_CONFIG_TYPE_1);
pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0);
@@ -288,7 +288,7 @@ machine_at_m773_init(const machine_t *model)
if (bios_only || !ret)
return ret;
machine_at_common_init_ex(model, 2);
machine_at_common_init(model);
pci_init(PCI_CONFIG_TYPE_1);
pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0);
@@ -329,7 +329,7 @@ machine_at_apas3_init(const machine_t *model)
if (bios_only || !ret)
return ret;
machine_at_common_init_ex(model, 2);
machine_at_common_init(model);
pci_init(PCI_CONFIG_TYPE_1);
pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0);
@@ -361,7 +361,7 @@ machine_at_p6bap_init(const machine_t *model)
if (bios_only || !ret)
return ret;
machine_at_common_init_ex(model, 2);
machine_at_common_init(model);
pci_init(PCI_CONFIG_TYPE_1);
pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0);
@@ -397,7 +397,7 @@ machine_at_6via90ap_init(const machine_t *model)
if (bios_only || !ret)
return ret;
machine_at_common_init_ex(model, 2);
machine_at_common_init(model);
pci_init(PCI_CONFIG_TYPE_1);
pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0);
@@ -435,7 +435,7 @@ machine_at_cuv4xls_init(const machine_t *model)
if (bios_only || !ret)
return ret;
machine_at_common_init_ex(model, 2);
machine_at_common_init(model);
pci_init(PCI_CONFIG_TYPE_1);
pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0);
@@ -565,7 +565,7 @@ machine_at_ms6318_init(const machine_t *model)
ret = bios_load_linear(fn, 0x000c0000, 262144, 0);
device_context_restore();
machine_at_common_init_ex(model, 2);
machine_at_common_init(model);
pci_init(PCI_CONFIG_TYPE_1);
pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0);
@@ -602,7 +602,7 @@ machine_at_cairo5_init(const machine_t *model)
if (bios_only || !ret)
return ret;
machine_at_common_init_ex(model, 2);
machine_at_common_init(model);
pci_init(PCI_CONFIG_TYPE_1);
pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0);

View File

@@ -350,7 +350,7 @@ machine_at_pc330_6573_init(const machine_t *model)
ret = bios_load_linear(fn, 0x000e0000, 131072, 0);
device_context_restore();
machine_at_common_init_ex(model, 2);
machine_at_common_init(model);
device_add(&ide_vlb_2ch_device);
pci_init(PCI_CONFIG_TYPE_1);
@@ -458,7 +458,7 @@ machine_at_pb450_init(const machine_t *model)
if (bios_only || !ret)
return ret;
machine_at_common_init_ex(model, 2);
machine_at_common_init(model);
device_add(&ide_vlb_2ch_device);
pci_init(PCI_CONFIG_TYPE_1);
@@ -582,8 +582,7 @@ machine_at_ninja_init(const machine_t *model)
if (bios_only || !ret)
return ret;
machine_at_common_init_ex(model, 2);
device_add(&amstrad_megapc_nvr_device);
machine_at_common_init(model);
pci_init(PCI_CONFIG_TYPE_1);
pci_register_slot(0x05, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0);
@@ -707,9 +706,8 @@ machine_at_alfredo_init(const machine_t *model)
if (bios_only || !ret)
return ret;
machine_at_common_init_ex(model, 2);
machine_at_common_init(model);
device_add(&amstrad_megapc_nvr_device);
device_add(&ide_pci_device);
pci_init(PCI_CONFIG_TYPE_2 | PCI_NO_IRQ_STEERING);
@@ -881,8 +879,7 @@ machine_at_pci400cb_init(const machine_t *model)
if (bios_only || !ret)
return ret;
machine_at_common_init_ex(model, 2);
device_add(&ami_1994_nvr_device);
machine_at_common_init(model);
pci_init(PCI_CONFIG_TYPE_1);
pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0);
@@ -929,7 +926,7 @@ machine_at_acerp3_init(const machine_t *model)
if (bios_only || !ret)
return ret;
machine_at_common_init_ex(model, 2);
machine_at_common_init(model);
machine_at_sis_85c496_common_init(model);
device_add(&sis_85c496_device);
@@ -963,7 +960,7 @@ machine_at_486sp3c_init(const machine_t *model)
if (bios_only || !ret)
return ret;
machine_at_common_init_ex(model, 2);
machine_at_common_init(model);
machine_at_sis_85c496_common_init(model);
device_add(&sis_85c496_device);
@@ -991,7 +988,7 @@ machine_at_ls486e_init(const machine_t *model)
if (bios_only || !ret)
return ret;
machine_at_common_init_ex(model, 2);
machine_at_common_init(model);
machine_at_sis_85c496_common_init(model);
device_add(&sis_85c496_ls486e_device);
@@ -1018,7 +1015,7 @@ machine_at_m4li_init(const machine_t *model)
if (bios_only || !ret)
return ret;
machine_at_common_init_ex(model, 2);
machine_at_common_init(model);
machine_at_sis_85c496_common_init(model);
device_add(&sis_85c496_device);
@@ -1045,7 +1042,7 @@ machine_at_ms4144_init(const machine_t *model)
if (bios_only || !ret)
return ret;
machine_at_common_init_ex(model, 2);
machine_at_common_init(model);
machine_at_sis_85c496_common_init(model);
device_add(&sis_85c496_ls486e_device);
@@ -1073,7 +1070,7 @@ machine_at_r418_init(const machine_t *model)
if (bios_only || !ret)
return ret;
machine_at_common_init_ex(model, 2);
machine_at_common_init(model);
machine_at_sis_85c496_common_init(model);
device_add(&sis_85c496_device);
@@ -1100,7 +1097,7 @@ machine_at_4saw2_init(const machine_t *model)
if (bios_only || !ret)
return ret;
machine_at_common_init_ex(model, 2);
machine_at_common_init(model);
machine_at_sis_85c496_common_init(model);
device_add(&sis_85c496_device);
@@ -1129,7 +1126,7 @@ machine_at_4dps_init(const machine_t *model)
if (bios_only || !ret)
return ret;
machine_at_common_init_ex(model, 2);
machine_at_common_init(model);
machine_at_sis_85c496_common_init(model);
device_add(&sis_85c496_device);
@@ -1471,11 +1468,8 @@ machine_at_hot433a_init(const machine_t *model)
ret = bios_load_linear(fn, 0x000e0000, 131072, 0);
device_context_restore();
machine_at_common_init_ex(model, 2);
if (is_award)
device_add(&amstrad_megapc_nvr_device);
else
device_add(&ami_1994_nvr_device);
machine_at_common_init(model);
device_add_params(&nvr_at_device, (void *) (uintptr_t) (is_award ? (NVR_AT_ZERO_DEFAULT) : (NVR_AMI_1994)));
pci_init(PCI_CONFIG_TYPE_1);
pci_register_slot(0x10, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0);

View File

@@ -254,9 +254,8 @@ machine_at_opti560l_init(const machine_t *model)
if (bios_only || !ret)
return ret;
machine_at_common_init_ex(model, 2);
machine_at_common_init(model);
device_add(&amstrad_megapc_nvr_device);
device_add(&ide_pci_device);
pci_init(PCI_CONFIG_TYPE_2);
@@ -434,9 +433,8 @@ machine_at_batman_init(const machine_t *model)
}
device_context_restore();
machine_at_common_init_ex(model, 2);
machine_at_common_init(model);
device_add(&amstrad_megapc_nvr_device);
device_add(&ide_pci_device);
pci_init(PCI_CONFIG_TYPE_2);
@@ -466,9 +464,8 @@ machine_at_batman_init(const machine_t *model)
void
machine_at_premiere_common_init(const machine_t *model, int pci_switch)
{
machine_at_common_init_ex(model, 2);
machine_at_common_init(model);
device_add(&amstrad_megapc_nvr_device);
device_add(&ide_pci_2ch_device);
pci_init(PCI_CONFIG_TYPE_2 | pci_switch);
@@ -669,8 +666,7 @@ machine_at_excaliburpci2_init(const machine_t *model)
if (bios_only || !ret)
return ret;
machine_at_common_init_ex(model, 2);
device_add(&ami_1994_nvr_device);
machine_at_common_init(model);
pci_init(PCI_CONFIG_TYPE_1 | FLAG_TRC_CONTROLS_CPURST);
pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0);

View File

@@ -83,7 +83,7 @@ machine_at_celebris5xx_init(const machine_t *model)
if (bios_only || !ret)
return ret;
machine_at_common_init_ex(model, 2);
machine_at_common_init(model);
pci_init(PCI_CONFIG_TYPE_1);
pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0);

View File

@@ -371,8 +371,7 @@ machine_at_apollo_init(const machine_t *model)
if (bios_only || !ret)
return ret;
machine_at_common_init_ex(model, 2);
device_add(&ami_1995_nvr_device);
machine_at_common_init(model);
pci_init(PCI_CONFIG_TYPE_1);
pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0);
@@ -402,8 +401,7 @@ machine_at_optiplexgxl_init(const machine_t *model)
if (bios_only || !ret)
return ret;
machine_at_common_init_ex(model, 2);
device_add(&amstrad_megapc_nvr_device);
machine_at_common_init(model);
pci_init(PCI_CONFIG_TYPE_1);
pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 1, 2, 3, 4);
@@ -428,6 +426,91 @@ machine_at_optiplexgxl_init(const machine_t *model)
return ret;
}
static const device_config_t pt2000_config[] = {
// clang-format off
{
.name = "bios",
.description = "BIOS Version",
.type = CONFIG_BIOS,
.default_string = "pt2000",
.default_int = 0,
.file_filter = NULL,
.spinner = { 0 },
.selection = { { 0 } },
.bios = {
{
.name = "Award Modular BIOS v4.50GP - Revision T1.01",
.internal_name = "pt2000",
.bios_type = BIOS_NORMAL,
.files_no = 1,
.local = 0,
.size = 131072,
.files = { "roms/machines/ficpt2000/PT2000_v1.01.BIN", "" }
},
{
.name = "Award Modular BIOS v4.51PG - Revision 3.072C806",
.internal_name = "pt2000_451pg",
.bios_type = BIOS_NORMAL,
.files_no = 1,
.local = 0,
.size = 131072,
.files = { "roms/machines/ficpt2000/3072c806.bin", "" }
},
{ .files_no = 0 }
},
},
{ .name = "", .description = "", .type = CONFIG_END }
// clang-format on
};
const device_t pt2000_device = {
.name = "FIC PT-2000",
.internal_name = "pt2000_device",
.flags = 0,
.local = 0,
.init = NULL,
.close = NULL,
.reset = NULL,
.available = NULL,
.speed_changed = NULL,
.force_redraw = NULL,
.config = pt2000_config
};
int
machine_at_pt2000_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, 0x000e0000, 131072, 0);
device_context_restore();
machine_at_common_init(model);
pci_init(PCI_CONFIG_TYPE_1);
pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0);
pci_register_slot(0x08, PCI_CARD_NORMAL, 1, 2, 3, 4);
pci_register_slot(0x09, PCI_CARD_NORMAL, 2, 3, 4, 1);
pci_register_slot(0x0A, PCI_CARD_NORMAL, 3, 4, 1, 2);
pci_register_slot(0x0B, PCI_CARD_NORMAL, 4, 1, 2, 3);
pci_register_slot(0x07, PCI_CARD_SOUTHBRIDGE, 0, 0, 0, 0);
device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params);
device_add(&i430fx_device);
device_add(&piix_device);
device_add_params(&pc873xx_device, (void *) (PC87332 | PCX730X_398));
device_add(&intel_flash_bxt_device);
return ret;
}
static void
machine_at_morrison32_gpio_init(void)
{
@@ -476,7 +559,7 @@ machine_at_morrison32_init(const machine_t *model)
if (bios_only || !ret)
return ret;
machine_at_common_init_ex(model, 2);
machine_at_common_init(model);
machine_at_morrison32_gpio_init();
pci_init(PCI_CONFIG_TYPE_1);
@@ -571,7 +654,7 @@ machine_at_pc330_65x6_init(const machine_t *model)
if (bios_only || !ret)
return ret;
machine_at_common_init_ex(model, 2);
machine_at_common_init(model);
machine_at_morrison64_gpio_init();
pci_init(PCI_CONFIG_TYPE_1);
@@ -625,91 +708,6 @@ machine_at_zappa_gpio_init(void)
machine_set_gpio_default(gpio);
}
static const device_config_t pt2000_config[] = {
// clang-format off
{
.name = "bios",
.description = "BIOS Version",
.type = CONFIG_BIOS,
.default_string = "pt2000",
.default_int = 0,
.file_filter = NULL,
.spinner = { 0 },
.selection = { { 0 } },
.bios = {
{
.name = "Award Modular BIOS v4.50GP - Revision T1.01",
.internal_name = "pt2000",
.bios_type = BIOS_NORMAL,
.files_no = 1,
.local = 0,
.size = 131072,
.files = { "roms/machines/ficpt2000/PT2000_v1.01.BIN", "" }
},
{
.name = "Award Modular BIOS v4.51PG - Revision 3.072C806",
.internal_name = "pt2000_451pg",
.bios_type = BIOS_NORMAL,
.files_no = 1,
.local = 0,
.size = 131072,
.files = { "roms/machines/ficpt2000/3072c806.bin", "" }
},
{ .files_no = 0 }
},
},
{ .name = "", .description = "", .type = CONFIG_END }
// clang-format on
};
const device_t pt2000_device = {
.name = "FIC PT-2000",
.internal_name = "pt2000_device",
.flags = 0,
.local = 0,
.init = NULL,
.close = NULL,
.reset = NULL,
.available = NULL,
.speed_changed = NULL,
.force_redraw = NULL,
.config = pt2000_config
};
int
machine_at_pt2000_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, 0x000e0000, 131072, 0);
device_context_restore();
machine_at_common_init(model);
pci_init(PCI_CONFIG_TYPE_1);
pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0);
pci_register_slot(0x08, PCI_CARD_NORMAL, 1, 2, 3, 4);
pci_register_slot(0x09, PCI_CARD_NORMAL, 2, 3, 4, 1);
pci_register_slot(0x0A, PCI_CARD_NORMAL, 3, 4, 1, 2);
pci_register_slot(0x0B, PCI_CARD_NORMAL, 4, 1, 2, 3);
pci_register_slot(0x07, PCI_CARD_SOUTHBRIDGE, 0, 0, 0, 0);
device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params);
device_add(&i430fx_device);
device_add(&piix_device);
device_add_params(&pc873xx_device, (void *) (PC87332 | PCX730X_398));
device_add(&intel_flash_bxt_device);
return ret;
}
static const device_config_t zappa_config[] = {
// clang-format off
{
@@ -778,7 +776,7 @@ machine_at_zappa_init(const machine_t *model)
ret = bios_load_linear_combined(fn, fn2, 0x20000, 128);
device_context_restore();
machine_at_common_init_ex(model, 2);
machine_at_common_init(model);
machine_at_zappa_gpio_init();
pci_init(PCI_CONFIG_TYPE_1);
@@ -894,8 +892,7 @@ machine_at_hawk_init(const machine_t *model)
if (bios_only || !ret)
return ret;
machine_at_common_init_ex(model, 2);
device_add(&ami_1994_nvr_device);
machine_at_common_init(model);
pci_init(PCI_CONFIG_TYPE_1);
pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0);
@@ -1088,8 +1085,7 @@ machine_at_ms5109_init(const machine_t *model)
if (bios_only || !ret)
return ret;
machine_at_common_init_ex(model, 2);
device_add(&ami_1994_nvr_device);
machine_at_common_init(model);
pci_init(PCI_CONFIG_TYPE_1 | FLAG_TRC_CONTROLS_CPURST);
pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0);
@@ -1121,8 +1117,7 @@ machine_at_torino_init(const machine_t *model)
if (bios_only || !ret)
return ret;
machine_at_common_init_ex(model, 2);
device_add(&ami_1994_nvr_device);
machine_at_common_init(model);
pci_init(PCI_CONFIG_TYPE_1 | FLAG_TRC_CONTROLS_CPURST);
pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0);
@@ -1189,7 +1184,7 @@ machine_at_bravoms586_init(const machine_t *model)
if (bios_only || !ret)
return ret;
machine_at_common_init_ex(model, 2);
machine_at_common_init(model);
pci_init(PCI_CONFIG_TYPE_1);
pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0);
@@ -1216,36 +1211,6 @@ machine_at_bravoms586_init(const machine_t *model)
return ret;
}
int
machine_at_g586vpmc_init(const machine_t *model)
{
int ret;
ret = bios_load_linear("roms/machines/g586vpmc/Vpm_c3.bin",
0x000e0000, 131072, 0);
if (bios_only || !ret)
return ret;
machine_at_common_init_ex(model, 2);
pci_init(PCI_CONFIG_TYPE_1);
pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0);
pci_register_slot(0x01, PCI_CARD_SOUTHBRIDGE, 0, 0, 0, 0);
pci_register_slot(0x02, PCI_CARD_NORMAL, 1, 2, 3, 4);
pci_register_slot(0x04, PCI_CARD_NORMAL, 2, 3, 4, 1);
pci_register_slot(0x06, PCI_CARD_NORMAL, 3, 4, 1, 2);
pci_register_slot(0x08, PCI_CARD_NORMAL, 4, 1, 2, 3);
pci_register_slot(0x0A, PCI_CARD_IDE, 0, 0, 0, 0);
device_add(&vl82c59x_device);
device_add(&sst_flash_29ee010_device);
device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params);
device_add_params(&pc873xx_device, (void *) (PC87332 | PCX730X_398));
device_add(&ide_cmd646_device);
return ret;
}
int
machine_at_m54si_init(const machine_t *model)
{
@@ -1257,7 +1222,7 @@ machine_at_m54si_init(const machine_t *model)
if (bios_only || !ret)
return ret;
machine_at_common_init_ex(model, 2);
machine_at_common_init(model);
pci_init(PCI_CONFIG_TYPE_1);
pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0);
@@ -1288,7 +1253,7 @@ machine_at_pb600_init(const machine_t *model)
if (bios_only || !ret)
return ret;
machine_at_common_init_ex(model, 2);
machine_at_common_init(model);
pci_init(PCI_CONFIG_TYPE_1);
pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0);
@@ -1324,7 +1289,7 @@ machine_at_globalyst620_init(const machine_t *model)
if (bios_only || !ret)
return ret;
machine_at_common_init_ex(model, 2);
machine_at_common_init(model);
pci_init(PCI_CONFIG_TYPE_1);
pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0);
@@ -1346,3 +1311,33 @@ machine_at_globalyst620_init(const machine_t *model)
return ret;
}
int
machine_at_g586vpmc_init(const machine_t *model)
{
int ret;
ret = bios_load_linear("roms/machines/g586vpmc/Vpm_c3.bin",
0x000e0000, 131072, 0);
if (bios_only || !ret)
return ret;
machine_at_common_init(model);
pci_init(PCI_CONFIG_TYPE_1);
pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0);
pci_register_slot(0x01, PCI_CARD_SOUTHBRIDGE, 0, 0, 0, 0);
pci_register_slot(0x02, PCI_CARD_NORMAL, 1, 2, 3, 4);
pci_register_slot(0x04, PCI_CARD_NORMAL, 2, 3, 4, 1);
pci_register_slot(0x06, PCI_CARD_NORMAL, 3, 4, 1, 2);
pci_register_slot(0x08, PCI_CARD_NORMAL, 4, 1, 2, 3);
pci_register_slot(0x0A, PCI_CARD_IDE, 0, 0, 0, 0);
device_add(&vl82c59x_wildcat_device);
device_add(&sst_flash_29ee010_device);
device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params);
device_add_params(&pc873xx_device, (void *) (PC87332 | PCX730X_398));
device_add(&ide_cmd646_device);
return ret;
}

View File

@@ -55,7 +55,7 @@ machine_at_acerm3a_init(const machine_t *model)
if (bios_only || !ret)
return ret;
machine_at_common_init_ex(model, 2);
machine_at_common_init(model);
pci_init(PCI_CONFIG_TYPE_1);
pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0);
@@ -190,7 +190,7 @@ machine_at_rubyusb_init(const machine_t *model)
if (bios_only || !ret)
return ret;
machine_at_common_init_ex(model, 2);
machine_at_common_init(model);
machine_at_rubyusb_gpio_init();
pci_init(PCI_CONFIG_TYPE_1);
@@ -326,7 +326,7 @@ machine_at_cu430hx_init(const machine_t *model)
ret = bios_load_linear_combined2(fn[0], fn[1], fn[2], fn[3], fn[4], 0x3a000, 128);
device_context_restore();
machine_at_common_init_ex(model, 2);
machine_at_common_init(model);
machine_at_cu430hx_gpio_init();
pci_init(PCI_CONFIG_TYPE_1);
@@ -452,7 +452,7 @@ machine_at_tc430hx_init(const machine_t *model)
ret = bios_load_linear_combined2(fn[0], fn[1], fn[2], fn[3], fn[4], 0x3a000, 128);
device_context_restore();
machine_at_common_init_ex(model, 2);
machine_at_common_init(model);
machine_at_tc430hx_gpio_init();
pci_init(PCI_CONFIG_TYPE_1);
@@ -544,7 +544,7 @@ machine_at_m7shi_init(const machine_t *model)
ret = bios_load_linear(fn, 0x000c0000, 262144, 0);
device_context_restore();
machine_at_common_init_ex(model, 2);
machine_at_common_init(model);
pci_init(PCI_CONFIG_TYPE_1);
pci_register_slot(0x07, PCI_CARD_SOUTHBRIDGE, 0, 0, 0, 0);
@@ -573,8 +573,7 @@ machine_at_epc2102_init(const machine_t *model)
if (bios_only || !ret)
return ret;
machine_at_common_init_ex(model, 2);
device_add_params(&at_nvr_device, (void *) 0x20);
machine_at_common_init(model);
pci_init(PCI_CONFIG_TYPE_1);
pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0);
@@ -613,7 +612,7 @@ machine_at_pcv90_init(const machine_t *model)
if (bios_only || !ret)
return ret;
machine_at_common_init_ex(model, 2);
machine_at_common_init(model);
machine_at_ag430hx_gpio_init();
pci_init(PCI_CONFIG_TYPE_1);
@@ -647,7 +646,7 @@ machine_at_p55t2s_init(const machine_t *model)
if (bios_only || !ret)
return ret;
machine_at_common_init_ex(model, 2);
machine_at_common_init(model);
pci_init(PCI_CONFIG_TYPE_1);
pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0);
@@ -801,7 +800,7 @@ machine_at_presario2240_init(const machine_t *model)
if (bios_only || !ret)
return ret;
machine_at_common_init_ex(model, 2);
machine_at_common_init(model);
pci_init(PCI_CONFIG_TYPE_1 | FLAG_NO_BRIDGES);
pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0);
@@ -831,7 +830,7 @@ machine_at_presario4500_init(const machine_t *model)
if (bios_only || !ret)
return ret;
machine_at_common_init_ex(model, 2);
machine_at_common_init(model);
pci_init(PCI_CONFIG_TYPE_1 | FLAG_NO_BRIDGES);
pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0);
@@ -865,7 +864,7 @@ machine_at_dellhannibalp_init(const machine_t *model)
if (bios_only || !ret)
return ret;
machine_at_common_init_ex(model, 2);
machine_at_common_init(model);
pci_init(PCI_CONFIG_TYPE_1);
pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0);
@@ -980,7 +979,7 @@ machine_at_p55va_init(const machine_t *model)
if (bios_only || !ret)
return ret;
machine_at_common_init_ex(model, 2);
machine_at_common_init(model);
pci_init(PCI_CONFIG_TYPE_1);
pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0);
@@ -1013,7 +1012,7 @@ machine_at_gw2kte_init(const machine_t *model)
if (bios_only || !ret)
return ret;
machine_at_common_init_ex(model, 2);
machine_at_common_init(model);
pci_init(PCI_CONFIG_TYPE_1);
pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0);
@@ -1046,7 +1045,7 @@ machine_at_brio80xx_init(const machine_t *model)
if (bios_only || !ret)
return ret;
machine_at_common_init_ex(model, 2);
machine_at_common_init(model);
pci_init(PCI_CONFIG_TYPE_1);
pci_register_slot(0x07, PCI_CARD_SOUTHBRIDGE, 0, 0, 0, 0);
@@ -1168,7 +1167,7 @@ machine_at_pb680_init(const machine_t *model)
if (bios_only || !ret)
return ret;
machine_at_common_init_ex(model, 2);
machine_at_common_init(model);
machine_at_nv430vx_gpio_init();
pci_init(PCI_CONFIG_TYPE_1);
@@ -1201,7 +1200,7 @@ machine_at_pb810_init(const machine_t *model)
if (bios_only || !ret)
return ret;
machine_at_common_init_ex(model, 2);
machine_at_common_init(model);
pci_init(PCI_CONFIG_TYPE_1);
pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0);
@@ -1293,7 +1292,7 @@ machine_at_nupro592_init(const machine_t *model)
if (bios_only || !ret)
return ret;
machine_at_common_init_ex(model, 2);
machine_at_common_init(model);
pci_init(PCI_CONFIG_TYPE_1);
pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0);
@@ -1333,7 +1332,7 @@ machine_at_tx97_init(const machine_t *model)
if (bios_only || !ret)
return ret;
machine_at_common_init_ex(model, 2);
machine_at_common_init(model);
pci_init(PCI_CONFIG_TYPE_1);
pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0);
@@ -1383,7 +1382,7 @@ machine_at_optiplexgn_init(const machine_t *model)
if (bios_only || !ret)
return ret;
machine_at_common_init_ex(model, 2);
machine_at_common_init(model);
pci_init(PCI_CONFIG_TYPE_1);
pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 1, 2, 3, 4);
@@ -1421,7 +1420,7 @@ machine_at_tomahawk_init(const machine_t *model)
if (bios_only || !ret)
return ret;
machine_at_common_init_ex(model, 2);
machine_at_common_init(model);
pci_init(PCI_CONFIG_TYPE_1);
pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0);
@@ -1463,7 +1462,7 @@ machine_at_ym430tx_init(const machine_t *model)
if (bios_only || !ret)
return ret;
machine_at_common_init_ex(model, 2);
machine_at_common_init(model);
pci_init(PCI_CONFIG_TYPE_1);
pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0);
@@ -1495,7 +1494,7 @@ machine_at_tx97xv_init(const machine_t *model)
if (bios_only || !ret)
return ret;
machine_at_common_init_ex(model, 2);
machine_at_common_init(model);
pci_init(PCI_CONFIG_TYPE_1);
pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 1, 2, 3, 4);
@@ -1648,7 +1647,7 @@ machine_at_ms5156_init(const machine_t *model)
ret = bios_load_linear(fn, 0x000e0000, 131072, 0);
device_context_restore();
machine_at_common_init_ex(model, 2);
machine_at_common_init(model);
pci_init(PCI_CONFIG_TYPE_1);
pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0);
@@ -1684,7 +1683,7 @@ machine_at_ma23c_init(const machine_t *model)
if (bios_only || !ret)
return ret;
machine_at_common_init_ex(model, 2);
machine_at_common_init(model);
pci_init(PCI_CONFIG_TYPE_1);
pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0);
@@ -1775,7 +1774,7 @@ machine_at_an430tx_init(const machine_t *model)
ret = bios_load_linear_combined2(fn[0], fn[1], fn[2], fn[3], fn[4], 0x3a000, 160);
device_context_restore();
machine_at_common_init_ex(model, 2);
machine_at_common_init(model);
pci_init(PCI_CONFIG_TYPE_1);
pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0);
@@ -1814,7 +1813,7 @@ machine_at_mb540n_init(const machine_t *model)
if (bios_only || !ret)
return ret;
machine_at_common_init_ex(model, 2);
machine_at_common_init(model);
pci_init(PCI_CONFIG_TYPE_1);
pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0);
@@ -1845,7 +1844,7 @@ machine_at_56a5_init(const machine_t *model)
if (bios_only || !ret)
return ret;
machine_at_common_init_ex(model, 2);
machine_at_common_init(model);
pci_init(PCI_CONFIG_TYPE_1);
pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0);
@@ -1877,7 +1876,7 @@ machine_at_p5mms98_init(const machine_t *model)
if (bios_only || !ret)
return ret;
machine_at_common_init_ex(model, 2);
machine_at_common_init(model);
pci_init(PCI_CONFIG_TYPE_1);
pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0);
@@ -1910,7 +1909,7 @@ machine_at_richmond_init(const machine_t *model)
if (bios_only || !ret)
return ret;
machine_at_common_init_ex(model, 2);
machine_at_common_init(model);
pci_init(PCI_CONFIG_TYPE_1);
pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0);
@@ -1944,7 +1943,7 @@ machine_at_ficva502_init(const machine_t *model)
if (bios_only || !ret)
return ret;
machine_at_common_init_ex(model, 2);
machine_at_common_init(model);
pci_init(PCI_CONFIG_TYPE_1);
pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0);
@@ -1975,7 +1974,7 @@ machine_at_ficpa2012_init(const machine_t *model)
if (bios_only || !ret)
return ret;
machine_at_common_init_ex(model, 2);
machine_at_common_init(model);
pci_init(PCI_CONFIG_TYPE_1);
pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0);
@@ -2006,7 +2005,7 @@ machine_at_via809ds_init(const machine_t *model)
if (bios_only || !ret)
return ret;
machine_at_common_init_ex(model, 2);
machine_at_common_init(model);
pci_init(PCI_CONFIG_TYPE_1);
pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0);
@@ -2038,7 +2037,7 @@ machine_at_cb52xsi_init(const machine_t *model)
if (bios_only || !ret)
return ret;
machine_at_common_init_ex(model, 2);
machine_at_common_init(model);
pci_init(PCI_CONFIG_TYPE_1 | FLAG_TRC_CONTROLS_CPURST);
pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0);
@@ -2121,7 +2120,7 @@ machine_at_ms5146_init(const machine_t *model)
ret = bios_load_linear(fn, 0x000e0000, 131072, 0);
device_context_restore();
machine_at_common_init_ex(model, 2);
machine_at_common_init(model);
pci_init(PCI_CONFIG_TYPE_1 | FLAG_TRC_CONTROLS_CPURST);
pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0);
@@ -2204,7 +2203,7 @@ machine_at_r534f_init(const machine_t *model)
ret = bios_load_linear(fn, 0x000e0000, 131072, 0);
device_context_restore();
machine_at_common_init_ex(model, 2);
machine_at_common_init(model);
pci_init(PCI_CONFIG_TYPE_1 | FLAG_TRC_CONTROLS_CPURST);
pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0);
@@ -2233,7 +2232,7 @@ machine_at_sp97xv_init(const machine_t *model)
if (bios_only || !ret)
return ret;
machine_at_common_init_ex(model, 2);
machine_at_common_init(model);
pci_init(PCI_CONFIG_TYPE_1 | FLAG_TRC_CONTROLS_CPURST);
pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0);
@@ -2262,7 +2261,7 @@ machine_at_sq578_init(const machine_t *model)
if (bios_only || !ret)
return ret;
machine_at_common_init_ex(model, 2);
machine_at_common_init(model);
pci_init(PCI_CONFIG_TYPE_1 | FLAG_TRC_CONTROLS_CPURST);
pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0);
@@ -2290,7 +2289,7 @@ machine_at_ms5172_init(const machine_t *model)
if (bios_only || !ret)
return ret;
machine_at_common_init_ex(model, 2);
machine_at_common_init(model);
pci_init(PCI_CONFIG_TYPE_1 | FLAG_TRC_CONTROLS_CPURST);
pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0);
@@ -2374,7 +2373,7 @@ machine_at_m5ata_init(const machine_t *model)
ret = bios_load_linear(fn, 0x000e0000, 131072, 0);
device_context_restore();
machine_at_common_init_ex(model, 2);
machine_at_common_init(model);
pci_init(PCI_CONFIG_TYPE_1);
pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 1, 2, 3, 4);
@@ -2403,7 +2402,7 @@ machine_at_ms5164_init(const machine_t *model)
if (bios_only || !ret)
return ret;
machine_at_common_init_ex(model, 2);
machine_at_common_init(model);
pci_init(PCI_CONFIG_TYPE_1);
pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0);
@@ -2436,7 +2435,7 @@ machine_at_m560_init(const machine_t *model)
if (bios_only || !ret)
return ret;
machine_at_common_init_ex(model, 2);
machine_at_common_init(model);
pci_init(PCI_CONFIG_TYPE_1);
pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0);

View File

@@ -204,7 +204,7 @@ machine_at_holly_init(const machine_t *model) /* HP Pavilion Holly, 7070/7090/51
if (bios_only || !ret)
return ret;
machine_at_common_init_ex(model, 2);
machine_at_common_init(model);
machine_at_holly_gpio_init();
pci_init(PCI_CONFIG_TYPE_1);
@@ -228,6 +228,38 @@ machine_at_holly_init(const machine_t *model) /* HP Pavilion Holly, 7070/7090/51
return ret;
}
int
machine_at_vectra500mt_init(const machine_t *model)
{
int ret;
ret = bios_load_linear("roms/machines/vectra500mt/GJ0718.FUL",
0x000e0000, 131072, 0);
if (bios_only || !ret)
return ret;
machine_at_common_init(model);
pci_init(PCI_CONFIG_TYPE_1);
pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0);
pci_register_slot(0x0F, PCI_CARD_SOUTHBRIDGE, 0, 0, 0, 0);
pci_register_slot(0x0D, PCI_CARD_VIDEO, 0, 0, 0, 0);
pci_register_slot(0x06, PCI_CARD_NORMAL, 1, 2, 3, 4);
pci_register_slot(0x07, PCI_CARD_NORMAL, 2, 3, 4, 1);
pci_register_slot(0x08, PCI_CARD_NORMAL, 3, 4, 1, 2);
if (gfxcard[0] == VID_INTERNAL)
device_add(machine_get_vid_device(machine));
device_add(&i430fx_device);
device_add(&piix_device);
device_add_params(&fdc37c93x_device, (void *) (FDC37XXX2 | FDC37C93X_NORMAL));
device_add(&sst_flash_29ee010_device);
return ret;
}
static void
machine_at_vectra52_gpio_init(void)
{
@@ -308,7 +340,7 @@ const device_t vectra52_device = {
int
machine_at_vectra52_init(const machine_t *model)
{
int ret = 0;
int ret = 0;
const char *fn;
/* No ROMs available */
@@ -320,8 +352,8 @@ machine_at_vectra52_init(const machine_t *model)
ret = bios_load_linear(fn, 0x000e0000, 131072, 0);
device_context_restore();
machine_at_common_init_ex(model, 2);
machine_at_vectra52_gpio_init();
machine_at_common_init(model);
machine_at_vectra52_gpio_init();
pci_init(PCI_CONFIG_TYPE_1);
pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0);
@@ -335,40 +367,9 @@ machine_at_vectra52_init(const machine_t *model)
device_add_params(&pc87306_device, (void *) PCX730X_PHOENIX_42);
device_add(&intel_flash_bxt_device);
if (gfxcard[0] == VID_INTERNAL)
device_add(machine_get_vid_device(machine));
return ret;
}
int
machine_at_vectra500mt_init(const machine_t *model)
{
int ret;
ret = bios_load_linear("roms/machines/vectra500mt/GJ0718.FUL",
0x000e0000, 131072, 0);
if (bios_only || !ret)
return ret;
machine_at_common_init_ex(model, 2);
pci_init(PCI_CONFIG_TYPE_1);
pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0);
pci_register_slot(0x0F, PCI_CARD_SOUTHBRIDGE, 0, 0, 0, 0);
pci_register_slot(0x0D, PCI_CARD_VIDEO, 0, 0, 0, 0);
pci_register_slot(0x06, PCI_CARD_NORMAL, 1, 2, 3, 4);
pci_register_slot(0x07, PCI_CARD_NORMAL, 2, 3, 4, 1);
pci_register_slot(0x08, PCI_CARD_NORMAL, 3, 4, 1, 2);
if (gfxcard[0] == VID_INTERNAL)
device_add(machine_get_vid_device(machine));
device_add(&i430fx_device);
device_add(&piix_device);
device_add_params(&fdc37c93x_device, (void *) (FDC37XXX2 | FDC37C93X_NORMAL));
device_add(&sst_flash_29ee010_device);
return ret;
}
@@ -383,7 +384,7 @@ machine_at_vectra54_init(const machine_t *model)
if (bios_only || !ret)
return ret;
machine_at_common_init_ex(model, 2);
machine_at_common_init(model);
pci_init(PCI_CONFIG_TYPE_1);
pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0);
@@ -404,6 +405,80 @@ machine_at_vectra54_init(const machine_t *model)
return ret;
}
static void
machine_at_atlantis_gpio_init(void)
{
uint32_t gpio = 0xffffe0cf;
/* Register 0x0079: */
/* Bit 7: 0 = Clear password, 1 = Keep password. */
/* Bit 6: 0 = NVRAM cleared by jumper, 1 = NVRAM normal. */
/* Bit 5: 0 = CMOS Setup disabled, 1 = CMOS Setup enabled. */
/* Bit 4: External CPU clock (Switch 8). */
/* Bit 3: External CPU clock (Switch 7). */
/* 50 MHz: Switch 7 = Off, Switch 8 = Off. */
/* 60 MHz: Switch 7 = On, Switch 8 = Off. */
/* 66 MHz: Switch 7 = Off, Switch 8 = On. */
/* Bit 2: 0 = On-board audio absent, 1 = On-board audio present. */
/* Bit 1: 0 = Soft-off capable power supply present, 1 = Soft-off capable power supply absent. */
/* Bit 0: 0 = 2x multiplier, 1 = 1.5x multiplier (Switch 6). */
/* NOTE: A bit is read as 1 if switch is off, and as 0 if switch is on. */
if (cpu_busspeed <= 50000000)
gpio |= 0xffff0000;
else if ((cpu_busspeed > 50000000) && (cpu_busspeed <= 60000000))
gpio |= 0xffff0800;
else if (cpu_busspeed > 60000000)
gpio |= 0xffff1000;
if (sound_card_current[0] == SOUND_INTERNAL)
gpio |= 0xffff0400;
if (cpu_dmulti <= 1.5)
gpio |= 0xffff0100;
else
gpio |= 0xffff0000;
machine_set_gpio_default(gpio);
}
int
machine_at_atlantis_init(const machine_t *model)
{
int ret;
ret = bios_load_linear_combined("roms/machines/atlantis/1007CL0_.BIO",
"roms/machines/atlantis/1007CL0_.BI1",
0x20000, 128);
if (bios_only || !ret)
return ret;
machine_at_common_init(model);
machine_at_atlantis_gpio_init();
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(0x0D, PCI_CARD_NORMAL, 1, 2, 3, 4);
pci_register_slot(0x0E, PCI_CARD_NORMAL, 2, 3, 4, 1);
pci_register_slot(0x0F, PCI_CARD_NORMAL, 3, 4, 1, 2);
pci_register_slot(0x10, PCI_CARD_NORMAL, 4, 1, 2, 3);
if (gfxcard[0] == VID_INTERNAL)
device_add(machine_get_vid_device(machine));
if (sound_card_current[0] == SOUND_INTERNAL)
machine_snd = device_add(machine_get_snd_device(machine));
device_add(&i430fx_device);
device_add(&piix_device);
device_add_params(&pc87306_device, (void *) PCX730X_AMI);
device_add(&intel_flash_bxt_ami_device);
return ret;
}
static const device_config_t thor_config[] = {
// clang-format off
{
@@ -535,7 +610,7 @@ machine_at_thor_init(const machine_t *model)
}
device_context_restore();
machine_at_common_init_ex(model, 2);
machine_at_common_init(model);
machine_at_thor_gpio_init();
pci_init(PCI_CONFIG_TYPE_1);
@@ -648,58 +723,6 @@ machine_at_endeavor_gpio_handler(uint8_t write, uint32_t val)
return ret;
}
static void
machine_at_monaco_gpio_init(void)
{
uint32_t gpio = 0xffffe0cf;
/* Register 0x0079: */
/* Bit 7: 0 = Clear password, 1 = Keep password. */
/* Bit 6: 0 = NVRAM cleared by jumper, 1 = NVRAM normal. */
/* Bit 5: 0 = CMOS Setup disabled, 1 = CMOS Setup enabled. */
/* Bit 4: External CPU clock (Switch 8). */
/* Bit 3: External CPU clock (Switch 7). */
/* 50 MHz: Switch 7 = Off, Switch 8 = Off. */
/* 60 MHz: Switch 7 = On, Switch 8 = Off. */
/* 66 MHz: Switch 7 = Off, Switch 8 = On. */
/* Bit 2: 0 = On-board audio absent, 1 = On-board audio present. */
/* Bit 1: 0 = Soft-off capable power supply present, 1 = Soft-off capable power supply absent. */
/* Bit 0: 0 = 2x multiplier, 1 = 1.5x multiplier (Switch 6). */
/* NOTE: A bit is read as 1 if switch is off, and as 0 if switch is on. */
if (cpu_busspeed <= 50000000)
gpio |= 0xffff0000;
else if ((cpu_busspeed > 50000000) && (cpu_busspeed <= 60000000))
gpio |= 0xffff0800;
else if (cpu_busspeed > 60000000)
gpio |= 0xffff1000;
if (sound_card_current[0] == SOUND_INTERNAL)
gpio |= 0xffff0400;
if (cpu_dmulti <= 1.5)
gpio |= 0xffff0100;
else
gpio |= 0xffff0000;
machine_set_gpio_default(gpio);
}
uint32_t
machine_at_monaco_gpio_handler(uint8_t write, uint32_t val)
{
uint32_t ret = machine_get_gpio_default();
if (write) {
ret &= ((val & 0xffffffcf) | 0xffff0000);
ret |= (val & 0x00000030);
machine_set_gpio(ret);
} else
ret = machine_get_gpio();
return ret;
}
int
machine_at_endeavor_init(const machine_t *model)
{
@@ -712,7 +735,7 @@ machine_at_endeavor_init(const machine_t *model)
if (bios_only || !ret)
return ret;
machine_at_common_init_ex(model, 2);
machine_at_common_init(model);
machine_at_endeavor_gpio_init();
pci_init(PCI_CONFIG_TYPE_1);
@@ -739,45 +762,7 @@ machine_at_endeavor_init(const machine_t *model)
}
/* The Monaco and Atlantis share the same GPIO config */
#define machine_at_atlantis_gpio_init machine_at_monaco_gpio_init
int
machine_at_atlantis_init(const machine_t *model)
{
int ret;
ret = bios_load_linear_combined("roms/machines/atlantis/1007CL0_.BIO",
"roms/machines/atlantis/1007CL0_.BI1",
0x20000, 128);
if (bios_only || !ret)
return ret;
machine_at_common_init_ex(model, 2);
machine_at_atlantis_gpio_init();
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(0x0D, PCI_CARD_NORMAL, 1, 2, 3, 4);
pci_register_slot(0x0E, PCI_CARD_NORMAL, 2, 3, 4, 1);
pci_register_slot(0x0F, PCI_CARD_NORMAL, 3, 4, 1, 2);
pci_register_slot(0x10, PCI_CARD_NORMAL, 4, 1, 2, 3);
if (gfxcard[0] == VID_INTERNAL)
device_add(machine_get_vid_device(machine));
if (sound_card_current[0] == SOUND_INTERNAL)
machine_snd = device_add(machine_get_snd_device(machine));
device_add(&i430fx_device);
device_add(&piix_device);
device_add_params(&pc87306_device, (void *) PCX730X_AMI);
device_add(&intel_flash_bxt_ami_device);
return ret;
}
#define machine_at_monaco_gpio_init machine_at_atlantis_gpio_init
static const device_config_t monaco_config[] = {
// clang-format off
@@ -830,6 +815,22 @@ const device_t monaco_device = {
.config = monaco_config
};
uint32_t
machine_at_monaco_gpio_handler(uint8_t write, uint32_t val)
{
uint32_t ret = machine_get_gpio_default();
if (write) {
ret &= ((val & 0xffffffcf) | 0xffff0000);
ret |= (val & 0x00000030);
machine_set_gpio(ret);
} else
ret = machine_get_gpio();
return ret;
}
int
machine_at_monaco_init(const machine_t *model)
{
@@ -847,7 +848,7 @@ machine_at_monaco_init(const machine_t *model)
ret = bios_load_linear_combined(fn, fn2, 0x20000, 128);
device_context_restore();
machine_at_common_init_ex(model, 2);
machine_at_common_init(model);
machine_at_monaco_gpio_init();
pci_init(PCI_CONFIG_TYPE_1);
@@ -999,7 +1000,7 @@ machine_at_pb640_init(const machine_t *model)
if (bios_only || !ret)
return ret;
machine_at_common_init_ex(model, 2);
machine_at_common_init(model);
machine_at_pb640_gpio_init();
pci_init(PCI_CONFIG_TYPE_1);
@@ -1148,7 +1149,7 @@ machine_at_acerv35n_init(const machine_t *model)
if (bios_only || !ret)
return ret;
machine_at_common_init_ex(model, 2);
machine_at_common_init(model);
pci_init(PCI_CONFIG_TYPE_1);
pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0);
@@ -1313,8 +1314,7 @@ machine_at_d943_init(const machine_t *model)
ret = bios_load_linear(fn, 0x000e0000, 131072, 0);
device_context_restore();
machine_at_common_init_ex(model, 2);
device_add(&amstrad_megapc_nvr_device);
machine_at_common_init(model);
pci_init(PCI_CONFIG_TYPE_1);
pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0);
@@ -1356,7 +1356,7 @@ machine_at_gw2kma_init(const machine_t *model)
if (bios_only || !ret)
return ret;
machine_at_common_init_ex(model, 2);
machine_at_common_init(model);
pci_init(PCI_CONFIG_TYPE_1);
pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0);
@@ -1456,7 +1456,7 @@ machine_at_5sbm2_init(const machine_t *model)
if (bios_only || !ret)
return ret;
machine_at_common_init_ex(model, 2);
machine_at_common_init(model);
pci_init(PCI_CONFIG_TYPE_1 | FLAG_TRC_CONTROLS_CPURST);
pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0);
@@ -1485,7 +1485,7 @@ machine_at_amis727_init(const machine_t *model)
if (bios_only || !ret)
return ret;
machine_at_common_init_ex(model, 2);
machine_at_common_init(model);
pci_init(PCI_CONFIG_TYPE_1 | FLAG_TRC_CONTROLS_CPURST);
pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0);
@@ -1578,7 +1578,7 @@ machine_at_ap5s_init(const machine_t *model)
ret = bios_load_linear(fn, 0x000e0000, 131072, 0);
device_context_restore();
machine_at_common_init_ex(model, 2);
machine_at_common_init(model);
pci_init(PCI_CONFIG_TYPE_1 | FLAG_TRC_CONTROLS_CPURST);
pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0);
@@ -1607,7 +1607,7 @@ machine_at_fm562_init(const machine_t *model)
if (bios_only || !ret)
return ret;
machine_at_common_init_ex(model, 2);
machine_at_common_init(model);
pci_init(PCI_CONFIG_TYPE_1 | FLAG_TRC_CONTROLS_CPURST);
pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 1, 2, 3, 4);
@@ -1638,7 +1638,7 @@ machine_at_pc140_6260_init(const machine_t *model)
if (bios_only || !ret)
return ret;
machine_at_common_init_ex(model, 2);
machine_at_common_init(model);
pci_init(PCI_CONFIG_TYPE_1 | FLAG_TRC_CONTROLS_CPURST);
pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 1, 2, 3, 4);
@@ -1724,7 +1724,7 @@ machine_at_ms5124_init(const machine_t *model)
ret = bios_load_linear(fn, 0x000e0000, 131072, 0);
device_context_restore();
machine_at_common_init_ex(model, 2);
machine_at_common_init(model);
pci_init(PCI_CONFIG_TYPE_1 | FLAG_TRC_CONTROLS_CPURST);
pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0);
@@ -1754,7 +1754,7 @@ machine_at_zeoswildcat_init(const machine_t *model)
if (bios_only || !ret)
return ret;
machine_at_common_init_ex(model, 2);
machine_at_common_init(model);
pci_init(PCI_CONFIG_TYPE_1);
pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0);

View File

@@ -72,6 +72,7 @@ machine_at_ap61_init(const machine_t *model)
return ret;
}
/* i450GX */
int
machine_at_p6rp4_init(const machine_t *model)
{
@@ -83,8 +84,7 @@ machine_at_p6rp4_init(const machine_t *model)
if (bios_only || !ret)
return ret;
machine_at_common_init_ex(model, 2);
device_add(&p6rp4_nvr_device);
machine_at_common_init(model);
pci_init(PCI_CONFIG_TYPE_1);
pci_register_slot(0x19, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0);
@@ -173,7 +173,7 @@ machine_at_ficpo6000_init(const machine_t *model)
ret = bios_load_linear(fn, 0x000e0000, 131072, 0);
device_context_restore();
machine_at_common_init_ex(model, 2);
machine_at_common_init(model);
pci_init(PCI_CONFIG_TYPE_1);
pci_register_slot(0x19, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0);
@@ -207,7 +207,7 @@ machine_at_acerv60n_init(const machine_t *model)
if (bios_only || !ret)
return ret;
machine_at_common_init_ex(model, 2);
machine_at_common_init(model);
pci_init(PCI_CONFIG_TYPE_1);
pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0);
@@ -496,7 +496,7 @@ machine_at_m6mi_init(const machine_t *model)
if (bios_only || !ret)
return ret;
machine_at_common_init_ex(model, 2);
machine_at_common_init(model);
pci_init(PCI_CONFIG_TYPE_1);
pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0);

View File

@@ -50,7 +50,7 @@ machine_at_p5a_init(const machine_t *model)
if (bios_only || !ret)
return ret;
machine_at_common_init_ex(model, 2);
machine_at_common_init(model);
pci_init(PCI_CONFIG_TYPE_1);
pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0);
@@ -59,12 +59,12 @@ machine_at_p5a_init(const machine_t *model)
pci_register_slot(0x0F, PCI_CARD_SOUTHBRIDGE_IDE, 1, 2, 3, 4);
pci_register_slot(0x03, PCI_CARD_SOUTHBRIDGE_PMU, 1, 2, 3, 4);
pci_register_slot(0x02, PCI_CARD_SOUTHBRIDGE_USB, 1, 2, 3, 4);
pci_register_slot(0x0C, PCI_CARD_NORMAL, 1, 2, 3, 4);
pci_register_slot(0x0B, PCI_CARD_NORMAL, 2, 3, 4, 1);
pci_register_slot(0x0A, PCI_CARD_NORMAL, 3, 4, 1, 2);
pci_register_slot(0x09, PCI_CARD_NORMAL, 4, 1, 2, 3);
pci_register_slot(0x0A, PCI_CARD_NORMAL, 3, 4, 1, 2);
pci_register_slot(0x0B, PCI_CARD_NORMAL, 2, 3, 4, 1);
pci_register_slot(0x0C, PCI_CARD_NORMAL, 1, 2, 3, 4);
pci_register_slot(0x0D, PCI_CARD_NORMAL, 4, 1, 2, 3);
pci_register_slot(0x06, PCI_CARD_NORMAL, 3, 4, 1, 2);
pci_register_slot(0x06, PCI_CARD_SOUND, 3, 4, 1, 2);
device_add(&ali1541_device);
device_add(&ali1543c_device); /* +0 */
@@ -86,7 +86,7 @@ machine_at_m579_init(const machine_t *model)
if (bios_only || !ret)
return ret;
machine_at_common_init_ex(model, 2);
machine_at_common_init(model);
pci_init(PCI_CONFIG_TYPE_1);
pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0);
@@ -118,7 +118,7 @@ machine_at_gwlucas_init(const machine_t *model)
if (bios_only || !ret)
return ret;
machine_at_common_init_ex(model, 2);
machine_at_common_init(model);
pci_init(PCI_CONFIG_TYPE_1);
pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0);
@@ -156,7 +156,7 @@ machine_at_5aa_init(const machine_t *model)
if (bios_only || !ret)
return ret;
machine_at_common_init_ex(model, 2);
machine_at_common_init(model);
pci_init(PCI_CONFIG_TYPE_1);
pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0);
@@ -243,7 +243,7 @@ machine_at_g5x_init(const machine_t *model)
ret = bios_load_linear(fn, 0x000e0000, 131072, 0);
device_context_restore();
machine_at_common_init_ex(model, 2);
machine_at_common_init(model);
pci_init(PCI_CONFIG_TYPE_1);
pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0);
@@ -278,7 +278,7 @@ machine_at_ax59pro_init(const machine_t *model)
if (bios_only || !ret)
return ret;
machine_at_common_init_ex(model, 2);
machine_at_common_init(model);
pci_init(PCI_CONFIG_TYPE_1);
pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0);
@@ -364,7 +364,7 @@ machine_at_delhi3_init(const machine_t *model)
ret = bios_load_linear(fn, 0x000c0000, 262144, 0);
device_context_restore();
machine_at_common_init_ex(model, 2);
machine_at_common_init(model);
pci_init(PCI_CONFIG_TYPE_1);
pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0);
@@ -395,7 +395,7 @@ machine_at_mvp3_init(const machine_t *model)
if (bios_only || !ret)
return ret;
machine_at_common_init_ex(model, 2);
machine_at_common_init(model);
pci_init(PCI_CONFIG_TYPE_1);
pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0);
@@ -425,7 +425,7 @@ machine_at_ficva503a_init(const machine_t *model)
if (bios_only || !ret)
return ret;
machine_at_common_init_ex(model, 2);
machine_at_common_init(model);
pci_init(PCI_CONFIG_TYPE_1);
pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0);
@@ -461,7 +461,7 @@ machine_at_5emapro_init(const machine_t *model)
if (bios_only || !ret)
return ret;
machine_at_common_init_ex(model, 2);
machine_at_common_init(model);
pci_init(PCI_CONFIG_TYPE_1);
pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0);
@@ -496,7 +496,7 @@ machine_at_k6bv3p_a_init(const machine_t *model)
if (bios_only || !ret)
return ret;
machine_at_common_init_ex(model, 2);
machine_at_common_init(model);
pci_init(PCI_CONFIG_TYPE_1);
pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 1, 2, 3, 5);
@@ -528,7 +528,7 @@ machine_at_5sg100_init(const machine_t *model)
if (bios_only || !ret)
return ret;
machine_at_common_init_ex(model, 2);
machine_at_common_init(model);
pci_init(PCI_CONFIG_TYPE_1);
pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0);

View File

@@ -191,7 +191,7 @@ machine_elt_init(const machine_t *model)
* indicate the correct display type */
device_add(&kbc_xt_device);
device_add(&elt_nvr_device);
device_add_params(model->nvr_device, (void *) model->nvr_params);
io_sethandler(0x11b8, 1, sysstat_in, NULL, NULL, sysstat_out, NULL, NULL, cga);

View File

@@ -444,8 +444,6 @@ ps1_setup(int model)
device_add(&ps1snd_device);
}
device_add(&ps_nvr_device);
}
static void

View File

@@ -229,8 +229,6 @@ ps2_isa_setup(int model, int cpu_type)
mem_remap_top(384);
device_add(&ps_nvr_device);
device_add(&fdc_ps2_device);
/* Enable the builtin HDC. */
@@ -264,18 +262,18 @@ machine_ps2_isa_p1_handler(void)
switch (mem_size / 1024) {
case 0: /*256Kx2*/
mem_p1 = 0xf0;
mem_p1 = 0xb0;
break;
case 1: /*256Kx4*/
mem_p1 = 0xe0;
mem_p1 = 0xa0;
break;
case 2: /*1Mx2*/
case 3:
mem_p1 = 0xd0;
mem_p1 = 0x90;
break;
case 4: /*1Mx4*/
default:
mem_p1 = 0xc0;
mem_p1 = 0x80;
break;
}

View File

@@ -1636,7 +1636,6 @@ machine_ps2_common_init(const machine_t *model)
dma16_init();
ps2_dma_init();
device_add(&ps_no_nmi_nvr_device);
pic2_init();
int pit_type = ((pit_mode == -1 && is486) || pit_mode == 1) ? PIT_8254_FAST : PIT_8254;

View File

@@ -2082,8 +2082,6 @@ machine_xt_tuliptc8_init(const machine_t *model)
nmi_init();
standalone_gameport_type = &gameport_200_device;
device_add(&amstrad_megapc_nvr_device);
return ret;
}
@@ -2134,8 +2132,6 @@ machine_xt_pc5086_init(const machine_t *model)
device_add(&kbc_xt_device);
device_add(&amstrad_megapc_nvr_device); /* NVR that is initialized to all 0x00's. */
return ret;
}

File diff suppressed because it is too large Load Diff

View File

@@ -207,7 +207,6 @@ machine_xt_xi8088_init(const machine_t *model)
device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params);
device_add(&port_6x_xi8088_device);
nmi_init();
device_add(&ibmat_nvr_device);
pic2_init();
standalone_gameport_type = &gameport_200_device;
device_add(&sst_flash_39sf010_device);

View File

@@ -117,6 +117,9 @@ machine_init_ex(int m)
cpu_fast_off_reset();
pci_flags = 0x00000000;
if (machines[m].nvr_device)
device_add_params(machines[m].nvr_device, (void *) (uintptr_t) machines[m].nvr_params);
}
is_pcjr = 0;

File diff suppressed because it is too large Load Diff

View File

@@ -505,7 +505,7 @@ net_switch_init(const netcard_t *card, const uint8_t *mac_addr, void *priv, char
if (netcard->secret[0] != '\0') {
uint8_t temp[32];
net_switch_secret_hash((const uint8_t *)netcard->secret, (uint8_t *) temp);
net_switch_secret_hash((const char *) netcard->secret, (uint8_t *) temp);
memcpy(netswitch->secret_hash, temp, 32);
netswitch->secret_enabled = 1;
} else {

View File

@@ -238,67 +238,59 @@
#include <86box/nvr.h>
/* RTC registers and bit definitions. */
#define RTC_SECONDS 0
#define RTC_ALSECONDS 1
#define AL_DONTCARE 0xc0 /* Alarm time is not set */
#define RTC_MINUTES 2
#define RTC_ALMINUTES 3
#define RTC_HOURS 4
#define RTC_AMPM 0x80 /* PM flag if 12h format in use */
#define RTC_ALHOURS 5
#define RTC_DOW 6
#define RTC_DOM 7
#define RTC_MONTH 8
#define RTC_YEAR 9
#define RTC_REGA 10
#define REGA_UIP 0x80
#define REGA_DV2 0x40
#define REGA_DV1 0x20
#define REGA_DV0 0x10
#define REGA_DV 0x70
#define REGA_RS3 0x08
#define REGA_RS2 0x04
#define REGA_RS1 0x02
#define REGA_RS0 0x01
#define REGA_RS 0x0f
#define RTC_REGB 11
#define REGB_SET 0x80
#define REGB_PIE 0x40
#define REGB_AIE 0x20
#define REGB_UIE 0x10
#define REGB_SQWE 0x08
#define REGB_DM 0x04
#define REGB_2412 0x02
#define REGB_DSE 0x01
#define RTC_REGC 12
#define REGC_IRQF 0x80
#define REGC_PF 0x40
#define REGC_AF 0x20
#define REGC_UF 0x10
#define RTC_REGD 13
#define REGD_VRT 0x80
#define RTC_CENTURY_AT 0x32 /* century register for AT etc */
#define RTC_CENTURY_PS 0x37 /* century register for PS/1 PS/2 */
#define RTC_CENTURY_ELT 0x1A /* century register for Epson Equity LT */
#define RTC_ALDAY 0x7D /* VIA VT82C586B - alarm day */
#define RTC_ALMONTH 0x7E /* VIA VT82C586B - alarm month */
#define RTC_CENTURY_VIA 0x7F /* century register for VIA VT82C586B */
#define RTC_SECONDS 0
#define RTC_ALSECONDS 1
/* Alarm time is not set. */
#define AL_DONTCARE 0xc0
#define RTC_MINUTES 2
#define RTC_ALMINUTES 3
#define RTC_HOURS 4
/* PM flag if 12h format in use. */
#define RTC_AMPM 0x80
#define RTC_ALHOURS 5
#define RTC_DOW 6
#define RTC_DOM 7
#define RTC_MONTH 8
#define RTC_YEAR 9
#define RTC_REGA 10
#define REGA_UIP 0x80
#define REGA_DV2 0x40
#define REGA_DV1 0x20
#define REGA_DV0 0x10
#define REGA_DV 0x70
#define REGA_RS3 0x08
#define REGA_RS2 0x04
#define REGA_RS1 0x02
#define REGA_RS0 0x01
#define REGA_RS 0x0f
#define RTC_REGB 11
#define REGB_SET 0x80
#define REGB_PIE 0x40
#define REGB_AIE 0x20
#define REGB_UIE 0x10
#define REGB_SQWE 0x08
#define REGB_DM 0x04
#define REGB_2412 0x02
#define REGB_DSE 0x01
#define RTC_REGC 12
#define REGC_IRQF 0x80
#define REGC_PF 0x40
#define REGC_AF 0x20
#define REGC_UF 0x10
#define RTC_REGD 13
#define REGD_VRT 0x80
/* VIA VT82C586B - alarm day. */
#define RTC_ALDAY 0x7d
/* VIA VT82C586B - alarm month. */
#define RTC_ALMONTH 0x7e
#define RTC_ALDAY_SIS 0x7E /* Day of Month Alarm for SiS */
#define RTC_ALMONT_SIS 0x7F /* Month Alarm for SiS */
/* Day of Month Alarm for SiS. */
#define RTC_ALDAY_SIS 0x7e
/* Month Alarm for SiS. */
#define RTC_ALMONTH_SIS 0x7f
#define RTC_REGS 14 /* number of registers */
#define FLAG_NO_NMI 0x001
#define FLAG_AMI_1992_HACK 0x002
#define FLAG_AMI_1994_HACK 0x004
#define FLAG_AMI_1995_HACK 0x008
#define FLAG_AMI_1999_HACK 0x010
#define FLAG_AMI_1999J_HACK 0x020
#define FLAG_P6RP4_HACK 0x040
#define FLAG_PIIX4 0x080
#define FLAG_MULTI_BANK 0x100
#define FLAG_MARTIN_HACK 0x200
/* Number of registers. */
#define RTC_REGS 14
typedef struct local_t {
int8_t stat;
@@ -319,6 +311,7 @@ typedef struct local_t {
int16_t state;
uint16_t flags;
uint16_t default_addr;
uint16_t addr[8];
@@ -482,7 +475,7 @@ timer_update(void *priv)
/* Check for any alarms we need to handle. */
if (check_alarm(nvr, RTC_SECONDS) && check_alarm(nvr, RTC_MINUTES) && check_alarm(nvr, RTC_HOURS) &&
check_alarm_via(nvr, RTC_DOM, RTC_ALDAY) && check_alarm_via(nvr, RTC_MONTH, RTC_ALMONTH) /* &&
check_alarm_via(nvr, RTC_DOM, RTC_ALDAY_SIS) && check_alarm_via(nvr, RTC_MONTH, RTC_ALMONT_SIS) */) {
check_alarm_via(nvr, RTC_DOM, RTC_ALDAY_SIS) && check_alarm_via(nvr, RTC_MONTH, RTC_ALMONTH_SIS) */) {
nvr->regs[RTC_REGC] |= REGC_AF;
timer_update_irq(nvr);
}
@@ -1148,108 +1141,34 @@ nvr_at_init(const device_t *info)
local = (local_t *) malloc(sizeof(local_t));
memset(local, 0x00, sizeof(local_t));
nvr->data = local;
nvr->data = local;
/* This is machine specific. */
nvr->size = machines[machine].nvrmask + 1;
local->lock = (uint8_t *) malloc(nvr->size);
nvr->size = (info->local & FLAG_FIXED_SIZE) ? 128 :
(machines[machine].nvrmask + 1);
local->lock = (uint8_t *) malloc(nvr->size);
memset(local->lock, 0x00, nvr->size);
local->def = 0xff /*0x00*/;
local->flags = 0x00;
switch (info->local & 0x0f) {
case 0: /* standard AT, no century register */
if (info->local == 32) {
local->flags |= FLAG_P6RP4_HACK;
nvr->irq = 8;
local->cent = RTC_CENTURY_AT;
} else {
nvr->irq = 8;
local->cent = 0xff;
}
break;
case 1: /* standard AT */
case 5: /* AMI WinBIOS 1994 */
case 6: /* AMI BIOS 1995 */
if ((info->local & 0x1f) == 0x11) {
local->flags |= FLAG_PIIX4;
local->def = 0x00;
} else {
local->def = 0x00;
if ((info->local & 0x1f) == 0x15)
local->flags |= FLAG_AMI_1994_HACK;
else if ((info->local & 0x1f) == 0x16)
local->flags |= FLAG_AMI_1995_HACK;
else
local->def = 0xff;
}
nvr->irq = 8;
local->cent = RTC_CENTURY_AT;
break;
local->flags = info->local & 0xffff;
local->cent = (info->local >> 16) & 0xff;
local->default_addr = (info->local >> 24) & 0xffff;
local->def = (local->flags & FLAG_ZERO_DEFAULT) ? 0x00 : 0xff;
nvr->irq = (info->local >> 40) & 0xff;
case 2: /* PS/1 or PS/2 */
nvr->irq = 8;
local->cent = RTC_CENTURY_PS;
local->def = 0x00;
if (info->local & 0x10)
local->flags |= FLAG_NO_NMI;
break;
if (nvr->irq == 0xff)
nvr->irq = -1;
else if (nvr->irq == 0xfe)
nvr->irq = device_get_config_int("irq");
case 3: /* Amstrad PC's */
nvr->irq = 1;
local->cent = RTC_CENTURY_AT;
local->def = 0xff;
if (info->local & 0x10)
local->flags |= FLAG_NO_NMI;
break;
if (local->default_addr == 0xfffe)
local->default_addr = device_get_config_hex16("base");
case 4: /* IBM AT */
if (info->local & 0x10) {
local->def = 0x00;
local->flags |= FLAG_AMI_1992_HACK;
} else if ((info->local == 36) || (info->local == 68)) {
local->def = 0x00;
if (info->local == 68)
local->flags |= FLAG_MARTIN_HACK;
} else
local->def = 0xff;
nvr->irq = 8;
local->cent = RTC_CENTURY_AT;
break;
if (nvr->is_new && (machines[machine].init == machine_at_spitfire_init))
local->flags |= FLAG_SPITFIRE_HACK;
case 7: /* VIA VT82C586B */
nvr->irq = 8;
local->cent = RTC_CENTURY_VIA;
break;
case 8: /* Epson Equity LT */
nvr->irq = -1;
local->cent = RTC_CENTURY_ELT;
break;
case 9: /* Intel PIIX4 + AMI 1999 hack */
local->flags |= (FLAG_PIIX4 | FLAG_AMI_1999_HACK);
local->def = 0x00;
nvr->irq = 8;
local->cent = RTC_CENTURY_AT;
break;
case 0x0a: /* Intel PIIX4 + AMI 1999J hack */
local->flags |= (FLAG_PIIX4 | FLAG_AMI_1999J_HACK);
local->def = 0x00;
nvr->irq = 8;
local->cent = RTC_CENTURY_AT;
break;
default:
break;
}
if (info->local & 0x20)
local->def = 0x00;
if (machines[machine].init == machine_at_monsoon_init)
local->def = 0xff;
if (info->local & 0x40)
local->flags |= FLAG_MULTI_BANK;
if (nvr->is_new && (machines[machine].init == machine_at_bx6_init))
local->flags |= FLAG_BX6_HACK;
local->read_addr = 1;
@@ -1276,27 +1195,21 @@ nvr_at_init(const device_t *info)
timer_load_count(nvr);
/* Set up the I/O handler for this device. */
if (info->local == 8) {
io_sethandler(0x11b4, 2,
io_sethandler(local->default_addr, 2,
nvr_read, NULL, NULL, nvr_write, NULL, NULL, nvr);
if (local->flags & FLAG_MULTI_ADDRESS)
io_sethandler(local->default_addr + 2, 2,
nvr_read, NULL, NULL, nvr_write, NULL, NULL, nvr);
} else {
io_sethandler(0x0070, 2,
nvr_read, NULL, NULL, nvr_write, NULL, NULL, nvr);
}
if (((info->local & 0x1f) == 0x11) || ((info->local & 0x1f) == 0x17) ||
((info->local & 0x1f) == 0x18)) {
io_sethandler(0x0072, 2,
nvr_read, NULL, NULL, nvr_write, NULL, NULL, nvr);
}
nvr_at_inited = 1;
}
/* This is a hack but it is required for the machine to boot properly, no idea why. */
if (nvr->is_new && (machines[machine].init == machine_at_spitfire_init))
if (nvr->is_new && (local->flags & FLAG_SPITFIRE_HACK))
nvr->regs[0x33] = nvr->regs[0x34] = 0xff;
if (nvr->is_new && (machines[machine].init == machine_at_bx6_init))
if (nvr->is_new && (local->flags & FLAG_BX6_HACK))
nvr->regs[0x39] = 0x09;
return nvr;
@@ -1328,8 +1241,8 @@ nvr_at_close(void *priv)
nvr_at_inited = 0;
}
const device_t at_nvr_old_device = {
.name = "PC/AT NVRAM (No century)",
const device_t nvr_at_device = {
.name = "PC/AT NVRAM",
.internal_name = "at_nvr_old",
.flags = DEVICE_ISA16,
.local = 0,
@@ -1341,255 +1254,3 @@ const device_t at_nvr_old_device = {
.force_redraw = NULL,
.config = NULL
};
const device_t at_nvr_device = {
.name = "PC/AT NVRAM",
.internal_name = "at_nvr",
.flags = DEVICE_ISA16,
.local = 1,
.init = nvr_at_init,
.close = nvr_at_close,
.reset = nvr_at_reset,
.available = NULL,
.speed_changed = nvr_at_speed_changed,
.force_redraw = NULL,
.config = NULL
};
const device_t at_mb_nvr_device = {
.name = "PC/AT NVRAM",
.internal_name = "at_nvr",
.flags = DEVICE_ISA16,
.local = 0x40 | 0x20 | 1,
.init = nvr_at_init,
.close = nvr_at_close,
.reset = nvr_at_reset,
.available = NULL,
.speed_changed = nvr_at_speed_changed,
.force_redraw = NULL,
.config = NULL
};
const device_t ps_nvr_device = {
.name = "PS/1 or PS/2 NVRAM",
.internal_name = "ps_nvr",
.flags = DEVICE_ISA16,
.local = 2,
.init = nvr_at_init,
.close = nvr_at_close,
.reset = nvr_at_reset,
.available = NULL,
.speed_changed = nvr_at_speed_changed,
.force_redraw = NULL,
.config = NULL
};
const device_t amstrad_nvr_device = {
.name = "Amstrad NVRAM",
.internal_name = "amstrad_nvr",
.flags = DEVICE_ISA16,
.local = 3,
.init = nvr_at_init,
.close = nvr_at_close,
.reset = nvr_at_reset,
.available = NULL,
.speed_changed = nvr_at_speed_changed,
.force_redraw = NULL,
.config = NULL
};
const device_t ibmat_nvr_device = {
.name = "IBM AT NVRAM",
.internal_name = "ibmat_nvr",
.flags = DEVICE_ISA16,
.local = 4,
.init = nvr_at_init,
.close = nvr_at_close,
.reset = nvr_at_reset,
.available = NULL,
.speed_changed = nvr_at_speed_changed,
.force_redraw = NULL,
.config = NULL
};
const device_t piix4_nvr_device = {
.name = "Intel PIIX4 PC/AT NVRAM",
.internal_name = "piix4_nvr",
.flags = DEVICE_ISA16,
.local = 0x10 | 1,
.init = nvr_at_init,
.close = nvr_at_close,
.reset = nvr_at_reset,
.available = NULL,
.speed_changed = nvr_at_speed_changed,
.force_redraw = NULL,
.config = NULL
};
const device_t ps_no_nmi_nvr_device = {
.name = "PS/1 or PS/2 NVRAM (No NMI)",
.internal_name = "ps1_nvr",
.flags = DEVICE_ISA16,
.local = 0x10 | 2,
.init = nvr_at_init,
.close = nvr_at_close,
.reset = nvr_at_reset,
.available = NULL,
.speed_changed = nvr_at_speed_changed,
.force_redraw = NULL,
.config = NULL
};
const device_t amstrad_no_nmi_nvr_device = {
.name = "Amstrad NVRAM (No NMI)",
.internal_name = "amstrad_nvr",
.flags = DEVICE_ISA16,
.local = 0x10 | 3,
.init = nvr_at_init,
.close = nvr_at_close,
.reset = nvr_at_reset,
.available = NULL,
.speed_changed = nvr_at_speed_changed,
.force_redraw = NULL,
.config = NULL
};
const device_t ami_1992_nvr_device = {
.name = "AMI Color 1992 PC/AT NVRAM",
.internal_name = "ami_1992_nvr",
.flags = DEVICE_ISA16,
.local = 0x10 | 4,
.init = nvr_at_init,
.close = nvr_at_close,
.reset = nvr_at_reset,
.available = NULL,
.speed_changed = nvr_at_speed_changed,
.force_redraw = NULL,
.config = NULL
};
const device_t ami_1994_nvr_device = {
.name = "AMI WinBIOS 1994 PC/AT NVRAM",
.internal_name = "ami_1994_nvr",
.flags = DEVICE_ISA16,
.local = 0x10 | 5,
.init = nvr_at_init,
.close = nvr_at_close,
.reset = nvr_at_reset,
.available = NULL,
.speed_changed = nvr_at_speed_changed,
.force_redraw = NULL,
.config = NULL
};
const device_t ami_1995_nvr_device = {
.name = "AMI WinBIOS 1995 PC/AT NVRAM",
.internal_name = "ami_1995_nvr",
.flags = DEVICE_ISA16,
.local = 0x10 | 6,
.init = nvr_at_init,
.close = nvr_at_close,
.reset = nvr_at_reset,
.available = NULL,
.speed_changed = nvr_at_speed_changed,
.force_redraw = NULL,
.config = NULL
};
const device_t via_nvr_device = {
.name = "VIA PC/AT NVRAM",
.internal_name = "via_nvr",
.flags = DEVICE_ISA16,
.local = 0x10 | 7,
.init = nvr_at_init,
.close = nvr_at_close,
.reset = nvr_at_reset,
.available = NULL,
.speed_changed = nvr_at_speed_changed,
.force_redraw = NULL,
.config = NULL
};
const device_t piix4_ami_1995_nvr_device = {
.name = "Intel PIIX4 AMI WinBIOS 1995 PC/AT NVRAM",
.internal_name = "piix4_ami_1995_nvr",
.flags = DEVICE_ISA16,
.local = 0x10 | 9,
.init = nvr_at_init,
.close = nvr_at_close,
.reset = nvr_at_reset,
.available = NULL,
.speed_changed = nvr_at_speed_changed,
.force_redraw = NULL,
.config = NULL
};
const device_t piix4_ami_1995j_nvr_device = {
.name = "Intel PIIX4 AMI WinBIOS 1995J PC/AT NVRAM",
.internal_name = "piix4_ami_1995j_nvr",
.flags = DEVICE_ISA16,
.local = 0x10 | 10,
.init = nvr_at_init,
.close = nvr_at_close,
.reset = nvr_at_reset,
.available = NULL,
.speed_changed = nvr_at_speed_changed,
.force_redraw = NULL,
.config = NULL
};
const device_t p6rp4_nvr_device = {
.name = "ASUS P/I-P6RP4 PC/AT NVRAM",
.internal_name = "p6rp4_nvr",
.flags = DEVICE_ISA16,
.local = 32,
.init = nvr_at_init,
.close = nvr_at_close,
.reset = nvr_at_reset,
.available = NULL,
.speed_changed = nvr_at_speed_changed,
.force_redraw = NULL,
.config = NULL
};
const device_t amstrad_megapc_nvr_device = {
.name = "Amstrad MegaPC NVRAM",
.internal_name = "amstrad_megapc_nvr",
.flags = DEVICE_ISA16,
.local = 36,
.init = nvr_at_init,
.close = nvr_at_close,
.reset = nvr_at_reset,
.available = NULL,
.speed_changed = nvr_at_speed_changed,
.force_redraw = NULL,
.config = NULL
};
const device_t martin_nvr_device = {
.name = "Zeos Martin NVRAM",
.internal_name = "martin_nvr",
.flags = DEVICE_ISA16,
.local = 68,
.init = nvr_at_init,
.close = nvr_at_close,
.reset = nvr_at_reset,
.available = NULL,
.speed_changed = nvr_at_speed_changed,
.force_redraw = NULL,
.config = NULL
};
const device_t elt_nvr_device = {
.name = "Epson Equity LT NVRAM",
.internal_name = "elt_nvr",
.flags = DEVICE_ISA,
.local = 8,
.init = nvr_at_init,
.close = nvr_at_close,
.reset = nvr_at_reset,
.available = NULL,
.speed_changed = nvr_at_speed_changed,
.force_redraw = NULL,
.config = NULL
};

View File

@@ -348,8 +348,9 @@ endif()
if(WIN32)
target_sources(plat PRIVATE win_cdrom_ioctl.c)
elseif(UNIX AND NOT APPLE)
target_sources(plat PRIVATE ../unix/linux_cdrom_ioctl.c)
else()
# Replace with proper *nix and mac handler files once they are done.
target_sources(plat PRIVATE dummy_cdrom_ioctl.c)
endif()

Binary file not shown.

Before

Width:  |  Height:  |  Size: 148 KiB

After

Width:  |  Height:  |  Size: 393 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 148 KiB

After

Width:  |  Height:  |  Size: 393 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 151 KiB

After

Width:  |  Height:  |  Size: 393 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 133 KiB

After

Width:  |  Height:  |  Size: 393 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.4 KiB

After

Width:  |  Height:  |  Size: 9.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.4 KiB

After

Width:  |  Height:  |  Size: 9.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.4 KiB

After

Width:  |  Height:  |  Size: 9.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.4 KiB

After

Width:  |  Height:  |  Size: 9.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.4 KiB

After

Width:  |  Height:  |  Size: 9.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.4 KiB

After

Width:  |  Height:  |  Size: 9.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.4 KiB

After

Width:  |  Height:  |  Size: 9.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.4 KiB

After

Width:  |  Height:  |  Size: 9.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.4 KiB

After

Width:  |  Height:  |  Size: 9.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.4 KiB

After

Width:  |  Height:  |  Size: 9.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.4 KiB

After

Width:  |  Height:  |  Size: 9.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.4 KiB

After

Width:  |  Height:  |  Size: 9.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.4 KiB

After

Width:  |  Height:  |  Size: 9.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.4 KiB

After

Width:  |  Height:  |  Size: 9.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.4 KiB

After

Width:  |  Height:  |  Size: 9.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.4 KiB

After

Width:  |  Height:  |  Size: 9.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.4 KiB

After

Width:  |  Height:  |  Size: 9.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.4 KiB

After

Width:  |  Height:  |  Size: 9.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.4 KiB

After

Width:  |  Height:  |  Size: 9.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.4 KiB

After

Width:  |  Height:  |  Size: 9.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.4 KiB

After

Width:  |  Height:  |  Size: 9.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.4 KiB

After

Width:  |  Height:  |  Size: 9.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.4 KiB

After

Width:  |  Height:  |  Size: 9.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.4 KiB

After

Width:  |  Height:  |  Size: 9.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.4 KiB

After

Width:  |  Height:  |  Size: 9.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.4 KiB

After

Width:  |  Height:  |  Size: 9.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.4 KiB

BIN
src/qt/icons/zip.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.4 KiB

BIN
src/qt/icons/zip_image.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.4 KiB

Some files were not shown because too many files have changed in this diff Show More