Merge branch '86Box:master' into nec-v20
This commit is contained in:
2
.github/workflows/cmake.yml
vendored
2
.github/workflows/cmake.yml
vendored
@@ -100,7 +100,7 @@ jobs:
|
||||
run: cmake --build build --target ${{ matrix.build.target }}
|
||||
- uses: actions/upload-artifact@v2
|
||||
with:
|
||||
name: '86Box${{ matrix.build.slug }}-MSYS2-${{ matrix.environment.msystem }}-gha${{ github.run_number }}'
|
||||
name: '86Box${{ matrix.build.slug }}-Windows-${{ matrix.environment.msystem }}-gha${{ github.run_number }}'
|
||||
path: build/artifacts/**
|
||||
|
||||
llvm-windows:
|
||||
|
||||
@@ -62,6 +62,7 @@ typedef struct _piix_ {
|
||||
uint8_t cur_readout_reg, rev,
|
||||
type, func_shift,
|
||||
max_func, pci_slot,
|
||||
no_mirq0, pad,
|
||||
regs[4][256],
|
||||
readout_regs[256], board_config[2];
|
||||
uint16_t func0_id, nvr_io_base,
|
||||
@@ -1412,7 +1413,7 @@ piix_reset(void *p)
|
||||
sff_set_irq_mode(dev->bm[0], 0, 0);
|
||||
sff_set_irq_mode(dev->bm[1], 0, 0);
|
||||
|
||||
if (dev->type >= 4) {
|
||||
if (dev->no_mirq0 || (dev->type >= 4)) {
|
||||
sff_set_irq_mode(dev->bm[0], 1, 0);
|
||||
sff_set_irq_mode(dev->bm[1], 1, 0);
|
||||
} else {
|
||||
@@ -1458,7 +1459,8 @@ static void
|
||||
dev->type = info->local & 0x0f;
|
||||
/* If (dev->type == 4) and (dev->rev & 0x08), then this is PIIX4E. */
|
||||
dev->rev = (info->local >> 4) & 0x0f;
|
||||
dev->func_shift = info->local >> 8;
|
||||
dev->func_shift = (info->local >> 8) & 0x0f;
|
||||
dev->no_mirq0 = (info->local >> 12) & 0x0f;
|
||||
dev->func0_id = info->local >> 16;
|
||||
|
||||
dev->pci_slot = pci_add_card(PCI_ADD_SOUTHBRIDGE, piix_read, piix_write, dev);
|
||||
@@ -1477,7 +1479,7 @@ static void
|
||||
sff_set_irq_mode(dev->bm[0], 0, 0);
|
||||
sff_set_irq_mode(dev->bm[1], 0, 0);
|
||||
|
||||
if (dev->type >= 4) {
|
||||
if (dev->no_mirq0 || (dev->type >= 4)) {
|
||||
sff_set_irq_mode(dev->bm[0], 1, 0);
|
||||
sff_set_irq_mode(dev->bm[1], 1, 0);
|
||||
} else {
|
||||
@@ -1643,6 +1645,21 @@ const device_t piix3_device =
|
||||
NULL
|
||||
};
|
||||
|
||||
const device_t piix3_ioapic_device =
|
||||
{
|
||||
"Intel 82371SB (PIIX3) (Boards with I/O APIC)",
|
||||
"piix3",
|
||||
DEVICE_PCI,
|
||||
0x70001403,
|
||||
piix_init,
|
||||
piix_close,
|
||||
piix_reset,
|
||||
{ NULL },
|
||||
piix_speed_changed,
|
||||
NULL,
|
||||
NULL
|
||||
};
|
||||
|
||||
const device_t piix4_device =
|
||||
{
|
||||
"Intel 82371AB/EB (PIIX4/PIIX4E)",
|
||||
|
||||
@@ -49,6 +49,9 @@
|
||||
|
||||
#define RAMMAP_REMP386 (1 << 4)
|
||||
|
||||
#define EMSEN1_EMSMAP (1 << 4)
|
||||
#define EMSEN1_EMSENAB (1 << 7)
|
||||
|
||||
#define NR_ELEMS(x) (sizeof(x) / sizeof(x[0]))
|
||||
|
||||
|
||||
@@ -72,13 +75,25 @@ typedef struct {
|
||||
int bank;
|
||||
} ram_struct_t;
|
||||
|
||||
typedef struct {
|
||||
void * parent;
|
||||
int segment;
|
||||
} ems_struct_t;
|
||||
|
||||
typedef struct {
|
||||
int cfg_index;
|
||||
uint8_t cfg_regs[256];
|
||||
int cfg_enable, ram_config;
|
||||
|
||||
int ems_index;
|
||||
int ems_autoinc;
|
||||
uint16_t ems[0x24];
|
||||
mem_mapping_t ems_mappings[20]; /*a0000-effff*/
|
||||
uint32_t mappings[20];
|
||||
|
||||
mem_mapping_t ram_mapping[2];
|
||||
ram_struct_t ram_struct[2];
|
||||
ems_struct_t ems_struct[20];
|
||||
|
||||
uint32_t ram_virt_base[2], ram_phys_base[2];
|
||||
uint32_t ram_mask[2];
|
||||
@@ -521,10 +536,109 @@ recalc_mappings(void *priv)
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
shadow_control(uint32_t addr, uint32_t size, int state)
|
||||
static void
|
||||
recalc_sltptr(scamp_t *dev)
|
||||
{
|
||||
switch (state) {
|
||||
uint32_t sltptr = dev->cfg_regs[CFG_SLTPTR] << 16;
|
||||
|
||||
if (sltptr >= 0xa0000 && sltptr < 0x100000)
|
||||
sltptr = 0x100000;
|
||||
if (sltptr > 0xfe0000)
|
||||
sltptr = 0xfe0000;
|
||||
|
||||
if (sltptr >= 0xa0000)
|
||||
{
|
||||
mem_set_mem_state(0, 0xa0000, MEM_READ_INTERNAL | MEM_WRITE_INTERNAL);
|
||||
mem_set_mem_state(0x100000, sltptr - 0x100000, MEM_READ_INTERNAL | MEM_WRITE_INTERNAL);
|
||||
mem_set_mem_state(sltptr, 0x1000000 - sltptr, MEM_READ_EXTANY | MEM_WRITE_EXTANY);
|
||||
}
|
||||
else
|
||||
{
|
||||
mem_set_mem_state(0, sltptr, MEM_READ_INTERNAL | MEM_WRITE_INTERNAL);
|
||||
mem_set_mem_state(sltptr, 0xa0000-sltptr, MEM_READ_EXTANY | MEM_WRITE_EXTANY);
|
||||
mem_set_mem_state(0x100000, 0xf00000, MEM_READ_EXTANY | MEM_WRITE_EXTANY);
|
||||
}
|
||||
}
|
||||
|
||||
static uint8_t
|
||||
scamp_ems_read(uint32_t addr, void *priv)
|
||||
{
|
||||
ems_struct_t *ems = (ems_struct_t *) priv;
|
||||
scamp_t *dev = ems->parent;
|
||||
int segment = ems->segment;
|
||||
|
||||
addr = (addr & 0x3fff) | dev->mappings[segment];
|
||||
return ram[addr];
|
||||
}
|
||||
|
||||
static void
|
||||
scamp_ems_write(uint32_t addr, uint8_t val, void *priv)
|
||||
{
|
||||
ems_struct_t *ems = (ems_struct_t *) priv;
|
||||
scamp_t *dev = ems->parent;
|
||||
int segment = ems->segment;
|
||||
|
||||
addr = (addr & 0x3fff) | dev->mappings[segment];
|
||||
ram[addr] = val;
|
||||
}
|
||||
|
||||
static void
|
||||
recalc_ems(scamp_t *dev)
|
||||
{
|
||||
int segment;
|
||||
const uint32_t ems_base[12] =
|
||||
{
|
||||
0xc0000, 0xc4000, 0xc8000, 0xcc000,
|
||||
0xd0000, 0xd4000, 0xd8000, 0xdc000,
|
||||
0xe0000, 0xe4000, 0xe8000, 0xec000
|
||||
};
|
||||
uint32_t new_mappings[20];
|
||||
uint16_t ems_enable;
|
||||
|
||||
for (segment = 0; segment < 20; segment++)
|
||||
new_mappings[segment] = 0xa0000 + segment*0x4000;
|
||||
|
||||
if (dev->cfg_regs[CFG_EMSEN1] & EMSEN1_EMSENAB)
|
||||
ems_enable = dev->cfg_regs[CFG_EMSEN2] | ((dev->cfg_regs[CFG_EMSEN1] & 0xf) << 8);
|
||||
else
|
||||
ems_enable = 0;
|
||||
|
||||
for (segment = 0; segment < 12; segment++)
|
||||
{
|
||||
if (ems_enable & (1 << segment))
|
||||
{
|
||||
uint32_t phys_addr = dev->ems[segment] << 14;
|
||||
|
||||
/*If physical address is in remapped memory then adjust down to a0000-fffff range*/
|
||||
if ((dev->cfg_regs[CFG_RAMMAP] & RAMMAP_REMP386) && phys_addr >= (mem_size * 1024)
|
||||
&& phys_addr < ((mem_size + 384) * 1024))
|
||||
phys_addr = (phys_addr - mem_size * 1024) + 0xa0000;
|
||||
new_mappings[(ems_base[segment] - 0xa0000) >> 14] = phys_addr;
|
||||
}
|
||||
}
|
||||
|
||||
for (segment = 0; segment < 20; segment++)
|
||||
{
|
||||
if (new_mappings[segment] != dev->mappings[segment])
|
||||
{
|
||||
dev->mappings[segment] = new_mappings[segment];
|
||||
if (new_mappings[segment] < (mem_size * 1024))
|
||||
{
|
||||
mem_mapping_set_exec(&dev->ems_mappings[segment], ram + dev->mappings[segment]);
|
||||
mem_mapping_enable(&dev->ems_mappings[segment]);
|
||||
}
|
||||
else
|
||||
mem_mapping_disable(&dev->ems_mappings[segment]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
shadow_control(uint32_t addr, uint32_t size, int state, int ems_enable)
|
||||
{
|
||||
if (ems_enable)
|
||||
mem_set_mem_state(addr, size, MEM_READ_INTERNAL | MEM_WRITE_INTERNAL);
|
||||
else switch (state) {
|
||||
case 0:
|
||||
mem_set_mem_state(addr, size, MEM_READ_EXTANY | MEM_WRITE_EXTANY);
|
||||
break;
|
||||
@@ -542,6 +656,55 @@ shadow_control(uint32_t addr, uint32_t size, int state)
|
||||
flushmmucache_nopc();
|
||||
}
|
||||
|
||||
static void
|
||||
shadow_recalc(scamp_t *dev)
|
||||
{
|
||||
uint8_t abaxs = (dev->cfg_regs[CFG_RAMMAP] & RAMMAP_REMP386) ? 0 : dev->cfg_regs[CFG_ABAXS];
|
||||
uint8_t caxs = (dev->cfg_regs[CFG_RAMMAP] & RAMMAP_REMP386) ? 0 : dev->cfg_regs[CFG_CAXS];
|
||||
uint8_t daxs = (dev->cfg_regs[CFG_RAMMAP] & RAMMAP_REMP386) ? 0 : dev->cfg_regs[CFG_DAXS];
|
||||
uint8_t feaxs = (dev->cfg_regs[CFG_RAMMAP] & RAMMAP_REMP386) ? 0 : dev->cfg_regs[CFG_FEAXS];
|
||||
uint32_t ems_enable;
|
||||
|
||||
if (dev->cfg_regs[CFG_EMSEN1] & EMSEN1_EMSENAB) {
|
||||
if (dev->cfg_regs[CFG_EMSEN1] & EMSEN1_EMSMAP) /*Axxx/Bxxx/Dxxx*/
|
||||
ems_enable = (dev->cfg_regs[CFG_EMSEN2] & 0xf) | ((dev->cfg_regs[CFG_EMSEN1] & 0xf) << 4) | ((dev->cfg_regs[CFG_EMSEN2] & 0xf0) << 8);
|
||||
else /*Cxxx/Dxxx/Exxx*/
|
||||
ems_enable = (dev->cfg_regs[CFG_EMSEN2] << 8) | ((dev->cfg_regs[CFG_EMSEN1] & 0xf) << 16);
|
||||
} else
|
||||
ems_enable = 0;
|
||||
|
||||
/*Enabling remapping will disable all shadowing*/
|
||||
if (dev->cfg_regs[CFG_RAMMAP] & RAMMAP_REMP386)
|
||||
mem_remap_top(384);
|
||||
|
||||
shadow_control(0xa0000, 0x4000, abaxs & 3, ems_enable & 0x00001);
|
||||
shadow_control(0xa0000, 0x4000, abaxs & 3, ems_enable & 0x00002);
|
||||
shadow_control(0xa8000, 0x4000, (abaxs >> 2) & 3, ems_enable & 0x00004);
|
||||
shadow_control(0xa8000, 0x4000, (abaxs >> 2) & 3, ems_enable & 0x00008);
|
||||
|
||||
shadow_control(0xb0000, 0x4000, (abaxs >> 4) & 3, ems_enable & 0x00010);
|
||||
shadow_control(0xb0000, 0x4000, (abaxs >> 4) & 3, ems_enable & 0x00020);
|
||||
shadow_control(0xb8000, 0x4000, (abaxs >> 6) & 3, ems_enable & 0x00040);
|
||||
shadow_control(0xb8000, 0x4000, (abaxs >> 6) & 3, ems_enable & 0x00080);
|
||||
|
||||
shadow_control(0xc0000, 0x4000, caxs & 3, ems_enable & 0x00100);
|
||||
shadow_control(0xc4000, 0x4000, (caxs >> 2) & 3, ems_enable & 0x00200);
|
||||
shadow_control(0xc8000, 0x4000, (caxs >> 4) & 3, ems_enable & 0x00400);
|
||||
shadow_control(0xcc000, 0x4000, (caxs >> 6) & 3, ems_enable & 0x00800);
|
||||
|
||||
shadow_control(0xd0000, 0x4000, daxs & 3, ems_enable & 0x01000);
|
||||
shadow_control(0xd4000, 0x4000, (daxs >> 2) & 3, ems_enable & 0x02000);
|
||||
shadow_control(0xd8000, 0x4000, (daxs >> 4) & 3, ems_enable & 0x04000);
|
||||
shadow_control(0xdc000, 0x4000, (daxs >> 6) & 3, ems_enable & 0x08000);
|
||||
|
||||
shadow_control(0xe0000, 0x4000, feaxs & 3, ems_enable & 0x10000);
|
||||
shadow_control(0xe4000, 0x4000, feaxs & 3, ems_enable & 0x20000);
|
||||
shadow_control(0xe8000, 0x4000, (feaxs >> 2) & 3, ems_enable & 0x40000);
|
||||
shadow_control(0xec000, 0x4000, (feaxs >> 2) & 3, ems_enable & 0x80000);
|
||||
|
||||
shadow_control(0xf0000, 0x8000, (feaxs >> 4) & 3, 0);
|
||||
shadow_control(0xf8000, 0x8000, (feaxs >> 6) & 3, 0);
|
||||
}
|
||||
|
||||
static void
|
||||
scamp_write(uint16_t addr, uint8_t val, void *priv)
|
||||
@@ -549,6 +712,26 @@ scamp_write(uint16_t addr, uint8_t val, void *priv)
|
||||
scamp_t *dev = (scamp_t *) priv;
|
||||
|
||||
switch (addr) {
|
||||
case 0xe8:
|
||||
dev->ems_index = val & 0x1f;
|
||||
dev->ems_autoinc = val & 0x40;
|
||||
break;
|
||||
|
||||
case 0xea:
|
||||
if (dev->ems_index < 0x24) {
|
||||
dev->ems[dev->ems_index] = (dev->ems[dev->ems_index] & 0x300) | val;
|
||||
recalc_ems(dev);
|
||||
}
|
||||
break;
|
||||
case 0xeb:
|
||||
if (dev->ems_index < 0x24) {
|
||||
dev->ems[dev->ems_index] = (dev->ems[dev->ems_index] & 0x0ff) | ((val & 3) << 8);
|
||||
recalc_ems(dev);
|
||||
}
|
||||
if (dev->ems_autoinc)
|
||||
dev->ems_index = (dev->ems_index + 1) & 0x1f;
|
||||
break;
|
||||
|
||||
case 0xec:
|
||||
if (dev->cfg_enable)
|
||||
dev->cfg_index = val;
|
||||
@@ -559,72 +742,26 @@ scamp_write(uint16_t addr, uint8_t val, void *priv)
|
||||
dev->cfg_regs[dev->cfg_index] = val;
|
||||
switch (dev->cfg_index) {
|
||||
case CFG_SLTPTR:
|
||||
recalc_sltptr(dev);
|
||||
break;
|
||||
|
||||
case CFG_RAMMAP:
|
||||
recalc_mappings(dev);
|
||||
mem_mapping_disable(&ram_remapped_mapping);
|
||||
if (dev->cfg_regs[CFG_RAMMAP] & RAMMAP_REMP386) {
|
||||
/* Enabling remapping will disable all shadowing */
|
||||
mem_remap_top(384);
|
||||
shadow_control(0xa0000, 0x60000, 0);
|
||||
} else {
|
||||
shadow_control(0xa0000, 0x8000, dev->cfg_regs[CFG_ABAXS] & 3);
|
||||
shadow_control(0xa8000, 0x8000, (dev->cfg_regs[CFG_ABAXS] >> 2) & 3);
|
||||
shadow_control(0xb0000, 0x8000, (dev->cfg_regs[CFG_ABAXS] >> 4) & 3);
|
||||
shadow_control(0xb8000, 0x8000, (dev->cfg_regs[CFG_ABAXS] >> 6) & 3);
|
||||
shadow_recalc(dev);
|
||||
break;
|
||||
|
||||
shadow_control(0xc0000, 0x4000, dev->cfg_regs[CFG_CAXS] & 3);
|
||||
shadow_control(0xc4000, 0x4000, (dev->cfg_regs[CFG_CAXS] >> 2) & 3);
|
||||
shadow_control(0xc8000, 0x4000, (dev->cfg_regs[CFG_CAXS] >> 4) & 3);
|
||||
shadow_control(0xcc000, 0x4000, (dev->cfg_regs[CFG_CAXS] >> 6) & 3);
|
||||
|
||||
shadow_control(0xd0000, 0x4000, dev->cfg_regs[CFG_DAXS] & 3);
|
||||
shadow_control(0xd4000, 0x4000, (dev->cfg_regs[CFG_DAXS] >> 2) & 3);
|
||||
shadow_control(0xd8000, 0x4000, (dev->cfg_regs[CFG_DAXS] >> 4) & 3);
|
||||
shadow_control(0xdc000, 0x4000, (dev->cfg_regs[CFG_DAXS] >> 6) & 3);
|
||||
|
||||
shadow_control(0xe0000, 0x8000, dev->cfg_regs[CFG_FEAXS] & 3);
|
||||
shadow_control(0xe8000, 0x8000, (dev->cfg_regs[CFG_FEAXS] >> 2) & 3);
|
||||
shadow_control(0xf0000, 0x8000, (dev->cfg_regs[CFG_FEAXS] >> 4) & 3);
|
||||
shadow_control(0xf8000, 0x8000, (dev->cfg_regs[CFG_FEAXS] >> 6) & 3);
|
||||
}
|
||||
case CFG_EMSEN1:
|
||||
case CFG_EMSEN2:
|
||||
shadow_recalc(dev);
|
||||
recalc_ems(dev);
|
||||
break;
|
||||
|
||||
case CFG_ABAXS:
|
||||
if (!(dev->cfg_regs[CFG_RAMMAP] & RAMMAP_REMP386)) {
|
||||
shadow_control(0xa0000, 0x8000, val & 3);
|
||||
shadow_control(0xa8000, 0x8000, (val >> 2) & 3);
|
||||
shadow_control(0xb0000, 0x8000, (val >> 4) & 3);
|
||||
shadow_control(0xb8000, 0x8000, (val >> 6) & 3);
|
||||
}
|
||||
break;
|
||||
|
||||
case CFG_CAXS:
|
||||
if (!(dev->cfg_regs[CFG_RAMMAP] & RAMMAP_REMP386)) {
|
||||
shadow_control(0xc0000, 0x4000, val & 3);
|
||||
shadow_control(0xc4000, 0x4000, (val >> 2) & 3);
|
||||
shadow_control(0xc8000, 0x4000, (val >> 4) & 3);
|
||||
shadow_control(0xcc000, 0x4000, (val >> 6) & 3);
|
||||
}
|
||||
break;
|
||||
|
||||
case CFG_DAXS:
|
||||
if (!(dev->cfg_regs[CFG_RAMMAP] & RAMMAP_REMP386)) {
|
||||
shadow_control(0xd0000, 0x4000, val & 3);
|
||||
shadow_control(0xd4000, 0x4000, (val >> 2) & 3);
|
||||
shadow_control(0xd8000, 0x4000, (val >> 4) & 3);
|
||||
shadow_control(0xdc000, 0x4000, (val >> 6) & 3);
|
||||
}
|
||||
break;
|
||||
|
||||
case CFG_FEAXS:
|
||||
if (!(dev->cfg_regs[CFG_RAMMAP] & RAMMAP_REMP386)) {
|
||||
shadow_control(0xe0000, 0x8000, val & 3);
|
||||
shadow_control(0xe8000, 0x8000, (val >> 2) & 3);
|
||||
shadow_control(0xf0000, 0x8000, (val >> 4) & 3);
|
||||
shadow_control(0xf8000, 0x8000, (val >> 6) & 3);
|
||||
}
|
||||
shadow_recalc(dev);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -648,6 +785,21 @@ scamp_read(uint16_t addr, void *priv)
|
||||
uint8_t ret = 0xff;
|
||||
|
||||
switch (addr) {
|
||||
case 0xe8:
|
||||
ret = dev->ems_index | dev->ems_autoinc;
|
||||
break;
|
||||
|
||||
case 0xea:
|
||||
if (dev->ems_index < 0x24)
|
||||
ret = dev->ems[dev->ems_index] & 0xff;
|
||||
break;
|
||||
case 0xeb:
|
||||
if (dev->ems_index < 0x24)
|
||||
ret = dev->ems[dev->ems_index] = (dev->ems[dev->ems_index] >> 8) & 0xfc;
|
||||
if (dev->ems_autoinc)
|
||||
dev->ems_index = (dev->ems_index + 1) & 0x1f;
|
||||
break;
|
||||
|
||||
case 0xed:
|
||||
if (dev->cfg_enable && (dev->cfg_index >= 0x00) && (dev->cfg_index <= 0x16))
|
||||
ret = (dev->cfg_regs[dev->cfg_index]);
|
||||
@@ -717,6 +869,8 @@ scamp_init(const device_t *info)
|
||||
ram_mirrored_read, NULL, NULL,
|
||||
ram_mirrored_write, NULL, NULL);
|
||||
mem_mapping_disable(&ram_high_mapping);
|
||||
mem_mapping_set_addr(&ram_mid_mapping, 0xf0000, 0x10000);
|
||||
mem_mapping_set_exec(&ram_mid_mapping, ram+0xf0000);
|
||||
|
||||
addr = 0;
|
||||
for (c = 0; c < 2; c++) {
|
||||
@@ -785,6 +939,17 @@ scamp_init(const device_t *info)
|
||||
|
||||
mem_set_mem_state(0xfe0000, 0x20000, MEM_READ_EXTANY | MEM_WRITE_EXTANY);
|
||||
|
||||
for (c = 0; c < 20; c++) {
|
||||
dev->ems_struct[c].parent = dev;
|
||||
dev->ems_struct[c].segment = c;
|
||||
mem_mapping_add(&dev->ems_mappings[c],
|
||||
0xa0000 + c*0x4000, 0x4000,
|
||||
scamp_ems_read, NULL, NULL,
|
||||
scamp_ems_write, NULL, NULL,
|
||||
ram + 0xa0000 + c*0x4000, MEM_MAPPING_INTERNAL, (void *)&dev->ems_struct[c]);
|
||||
dev->mappings[c] = 0xa0000 + c*0x4000;
|
||||
}
|
||||
|
||||
dev->port_92 = device_add(&port_92_device);
|
||||
|
||||
return dev;
|
||||
|
||||
@@ -92,6 +92,7 @@ extern const device_t piix_device;
|
||||
extern const device_t piix_old_device;
|
||||
extern const device_t piix_rev02_device;
|
||||
extern const device_t piix3_device;
|
||||
extern const device_t piix3_ioapic_device;
|
||||
extern const device_t piix4_device;
|
||||
extern const device_t piix4e_device;
|
||||
extern const device_t slc90e66_device;
|
||||
|
||||
@@ -334,7 +334,7 @@ machine_at_pb520r_init(const machine_t *model)
|
||||
int ret;
|
||||
|
||||
ret = bios_load_linear_combined("roms/machines/pb520r/1009bc0r.bio",
|
||||
"roms/machines/pb520r/1009bc0r.bi1", 0x1c000, 128);
|
||||
"roms/machines/pb520r/1009bc0r.bi1", 0x1d000, 128);
|
||||
|
||||
if (bios_only || !ret)
|
||||
return ret;
|
||||
|
||||
@@ -303,7 +303,7 @@ machine_at_p65up5_common_init(const machine_t *model, const device_t *northbridg
|
||||
pci_register_slot(0x0C, PCI_CARD_NORMAL, 1, 2, 3, 4);
|
||||
pci_register_slot(0x0D, PCI_CARD_NORMAL, 4, 1, 2, 3);
|
||||
device_add(northbridge);
|
||||
device_add(&piix3_device);
|
||||
device_add(&piix3_ioapic_device);
|
||||
device_add(&keyboard_ps2_ami_pci_device);
|
||||
device_add(&w83877f_device);
|
||||
device_add(&sst_flash_29ee010_device);
|
||||
|
||||
@@ -178,7 +178,7 @@ const machine_t machines[] = {
|
||||
/* Uses Compaq KBC firmware. */
|
||||
{ "[ISA] Compaq Portable III", "portableiii", MACHINE_TYPE_286, CPU_PKG_286, 0, 0, 0, 0, 0, 0, 0, MACHINE_AT | MACHINE_VIDEO, 640, 16384, 128, 127, machine_at_portableiii_init, at_cpqiii_get_device },
|
||||
/* Has IBM AT KBC firmware. */
|
||||
{ "[ISA] MR 286 clone", "mr286", MACHINE_TYPE_286, CPU_PKG_286, 0, 0, 0, 0, 0, 0, 0, MACHINE_AT | MACHINE_IDE, 512, 16384, 128, 127, machine_at_mr286_init, NULL },
|
||||
{ "[ISA] MR BIOS 286 clone", "mr286", MACHINE_TYPE_286, CPU_PKG_286, 0, 0, 0, 0, 0, 0, 0, MACHINE_AT | MACHINE_IDE, 512, 16384, 128, 127, machine_at_mr286_init, NULL },
|
||||
/* Has IBM AT KBC firmware. */
|
||||
{ "[ISA] NCR PC8/810/710/3390/3392", "pc8", MACHINE_TYPE_286, CPU_PKG_286, 0, 0, 0, 0, 0, 0, 0, MACHINE_AT, 512, 16384, 128, 127, machine_at_pc8_init, NULL },
|
||||
#if defined(DEV_BRANCH) && defined(USE_OLIVETTI)
|
||||
@@ -246,7 +246,7 @@ const machine_t machines[] = {
|
||||
{ "[ALi M1217] Flytech 386", "flytech386", MACHINE_TYPE_386SX, CPU_PKG_386SX, 0, 0, 0, 0, 0, 0, 0, MACHINE_AT | MACHINE_BUS_PS2 | MACHINE_IDE | MACHINE_VIDEO, 1024, 16384, 1024, 127, machine_at_flytech386_init, at_flytech386_get_device },
|
||||
/* I'm going to assume this has a standard/generic IBM-compatible AT KBC
|
||||
firmware until the board is identified. */
|
||||
{ "[ALi M1217] MR 386SX clone", "mr1217", MACHINE_TYPE_386SX, CPU_PKG_386SX, 0, 0, 0, 0, 0, 0, 0, MACHINE_AT | MACHINE_BUS_PS2 | MACHINE_IDE | MACHINE_VIDEO, 1024, 16384, 1024, 127, machine_at_mr1217_init, NULL },
|
||||
{ "[ALi M1217] MR BIOS 386SX clone", "mr1217", MACHINE_TYPE_386SX, CPU_PKG_386SX, 0, 0, 0, 0, 0, 0, 0, MACHINE_AT | MACHINE_BUS_PS2 | MACHINE_IDE | MACHINE_VIDEO, 1024, 16384, 1024, 127, machine_at_mr1217_init, NULL },
|
||||
/* Has IBM PS/2 Type 1 KBC firmware. */
|
||||
{ "[ALi M6117] Acrosser PJ-A511M", "pja511m", MACHINE_TYPE_386SX, CPU_PKG_M6117, 0, 0, 0, 0, 0, 0, 0, MACHINE_AT | MACHINE_BUS_PS2 | MACHINE_IDE, 1024, 32768, 1024, 127, machine_at_pja511m_init, NULL },
|
||||
/* Has IBM PS/2 Type 1 KBC firmware. */
|
||||
|
||||
@@ -227,7 +227,7 @@ BEGIN
|
||||
DLG_CFG_MACHINE, DIALOG
|
||||
BEGIN
|
||||
LEFTMARGIN, 7
|
||||
RIGHTMARGIN, 260
|
||||
RIGHTMARGIN, 300
|
||||
TOPMARGIN, 7
|
||||
#ifdef USE_DYNAREC
|
||||
BOTTOMMARGIN, 87
|
||||
@@ -239,7 +239,7 @@ BEGIN
|
||||
DLG_CFG_VIDEO, DIALOG
|
||||
BEGIN
|
||||
LEFTMARGIN, 7
|
||||
RIGHTMARGIN, 260
|
||||
RIGHTMARGIN, 300
|
||||
TOPMARGIN, 7
|
||||
BOTTOMMARGIN, 38
|
||||
END
|
||||
@@ -247,7 +247,7 @@ BEGIN
|
||||
DLG_CFG_INPUT, DIALOG
|
||||
BEGIN
|
||||
LEFTMARGIN, 7
|
||||
RIGHTMARGIN, 260
|
||||
RIGHTMARGIN, 300
|
||||
TOPMARGIN, 7
|
||||
BOTTOMMARGIN, 58
|
||||
END
|
||||
@@ -255,7 +255,7 @@ BEGIN
|
||||
DLG_CFG_SOUND, DIALOG
|
||||
BEGIN
|
||||
LEFTMARGIN, 7
|
||||
RIGHTMARGIN, 260
|
||||
RIGHTMARGIN, 300
|
||||
TOPMARGIN, 7
|
||||
BOTTOMMARGIN, 109
|
||||
END
|
||||
@@ -263,7 +263,7 @@ BEGIN
|
||||
DLG_CFG_NETWORK, DIALOG
|
||||
BEGIN
|
||||
LEFTMARGIN, 7
|
||||
RIGHTMARGIN, 260
|
||||
RIGHTMARGIN, 300
|
||||
TOPMARGIN, 7
|
||||
BOTTOMMARGIN, 56
|
||||
END
|
||||
@@ -271,7 +271,7 @@ BEGIN
|
||||
DLG_CFG_PORTS, DIALOG
|
||||
BEGIN
|
||||
LEFTMARGIN, 7
|
||||
RIGHTMARGIN, 260
|
||||
RIGHTMARGIN, 300
|
||||
TOPMARGIN, 7
|
||||
BOTTOMMARGIN, 48
|
||||
END
|
||||
@@ -279,7 +279,7 @@ BEGIN
|
||||
DLG_CFG_PERIPHERALS, DIALOG
|
||||
BEGIN
|
||||
LEFTMARGIN, 7
|
||||
RIGHTMARGIN, 260
|
||||
RIGHTMARGIN, 300
|
||||
TOPMARGIN, 7
|
||||
BOTTOMMARGIN, 85
|
||||
END
|
||||
@@ -287,7 +287,7 @@ BEGIN
|
||||
DLG_CFG_HARD_DISKS, DIALOG
|
||||
BEGIN
|
||||
LEFTMARGIN, 7
|
||||
RIGHTMARGIN, 260
|
||||
RIGHTMARGIN, 300
|
||||
TOPMARGIN, 7
|
||||
BOTTOMMARGIN, 137
|
||||
END
|
||||
@@ -295,7 +295,7 @@ BEGIN
|
||||
DLG_CFG_FLOPPY_DRIVES, DIALOG
|
||||
BEGIN
|
||||
LEFTMARGIN, 7
|
||||
RIGHTMARGIN, 260
|
||||
RIGHTMARGIN, 300
|
||||
TOPMARGIN, 7
|
||||
BOTTOMMARGIN, 96
|
||||
END
|
||||
@@ -303,7 +303,7 @@ BEGIN
|
||||
DLG_CFG_OTHER_REMOVABLE_DEVICES, DIALOG
|
||||
BEGIN
|
||||
LEFTMARGIN, 7
|
||||
RIGHTMARGIN, 260
|
||||
RIGHTMARGIN, 300
|
||||
TOPMARGIN, 7
|
||||
BOTTOMMARGIN, 214
|
||||
END
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -15,7 +15,7 @@ LANGUAGE LANG_UKRAINIAN, SUBLANG_DEFAULT
|
||||
|
||||
MainMenu MENU DISCARDABLE
|
||||
BEGIN
|
||||
POPUP "&Действие"
|
||||
POPUP "&Дія"
|
||||
BEGIN
|
||||
MENUITEM "&Клавіатура потребує захвату", IDM_ACTION_KBD_REQ_CAPTURE
|
||||
MENUITEM "&Правий CTRL - це лівий ALT", IDM_ACTION_RCTRL_IS_LALT
|
||||
@@ -29,7 +29,7 @@ BEGIN
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Вихід...", IDM_ACTION_EXIT
|
||||
END
|
||||
POPUP "&Вид"
|
||||
POPUP "&Вигляд"
|
||||
BEGIN
|
||||
MENUITEM "&Приховати рядок стану", IDM_VID_HIDE_STATUS_BAR
|
||||
MENUITEM "&Приховати панель інструментів", IDM_VID_HIDE_TOOLBAR
|
||||
@@ -385,7 +385,7 @@ END
|
||||
#define STR_250 "ZIP 250"
|
||||
|
||||
#define STR_ISARTC "ISA RTC:"
|
||||
#define STR_ISAMEM "Карта розширення памя'ті (ISA)"
|
||||
#define STR_ISAMEM "Карта розширення пам'яті (ISA)"
|
||||
#define STR_ISAMEM_1 "Карта 1:"
|
||||
#define STR_ISAMEM_2 "Карта 2:"
|
||||
#define STR_ISAMEM_3 "Карта 3:"
|
||||
@@ -414,12 +414,12 @@ BEGIN
|
||||
IDS_2054 "ZIP %03i %i (%s): %ls"
|
||||
IDS_2055 "Образи ZIP (*.IM?;*.ZDI)\0*.IM?;*.ZDI\0"
|
||||
IDS_2056 "86Box не зміг знайти жодного відповідного для використання файлу з ПЗУ.\n\nБудь ласка <a href=""https://github.com/86Box/roms/releases/latest"">завантажте</a> набір ПЗУ і витягніть його в каталог ""roms""."
|
||||
IDS_2057 "(пусто)"
|
||||
IDS_2057 "(порожньо)"
|
||||
IDS_2058 "Образи ZIP (*.IM?;*.ZDI)\0*.IM?;*.ZDI\0Всі файли (*.*)\0*.*\0"
|
||||
IDS_2059 "Турбо"
|
||||
IDS_2060 "Увімк"
|
||||
IDS_2061 "Вимк"
|
||||
IDS_2062 "Всі образи (*.86F;*.DSK;*.FLP;*.IM?;*.*FD?)\0*.86F;*.DSK;*.FLP;*.IM?;*.*FD?\0Прості посекторні образи (*.DSK;*.FLP;*.IM?;*.*FD?)\0*.DSK;*.FLP;*.IM?;*.IMG;*.*FD?\0Surface образы (*.86F)\0*.86F\0"
|
||||
IDS_2062 "Всі образи (*.86F;*.DSK;*.FLP;*.IM?;*.*FD?)\0*.86F;*.DSK;*.FLP;*.IM?;*.*FD?\0Прості посекторні образи (*.DSK;*.FLP;*.IM?;*.*FD?)\0*.DSK;*.FLP;*.IM?;*.IMG;*.*FD?\0Образ поверхні (*.86F)\0*.86F\0"
|
||||
IDS_2063 "Системна плата ""%hs"" недоступна через відсутність файлу її ПЗУ в каталозі roms/machines. Переключення на доступну системну плату."
|
||||
END
|
||||
|
||||
@@ -439,8 +439,8 @@ BEGIN
|
||||
IDS_2075 "Інша периферія"
|
||||
IDS_2076 "Образи Surface (*.86F)\0*.86F\0"
|
||||
IDS_2077 "Клацніть мишею для захвату курсора"
|
||||
IDS_2078 "Натисніть F8+F12 щоб звільнити курсор"
|
||||
IDS_2079 "Натисніть F8+F12 або середню кнопку миши щоб звільнити курсор"
|
||||
IDS_2078 "Натисніть F8+F12, щоб звільнити курсор"
|
||||
IDS_2079 "Натисніть F8+F12 або середню кнопку миші, щоб звільнити курсор"
|
||||
END
|
||||
|
||||
STRINGTABLE DISCARDABLE
|
||||
@@ -470,7 +470,7 @@ BEGIN
|
||||
IDS_2102 "Система управління польотом Thrustmaster"
|
||||
IDS_2103 "Ні"
|
||||
IDS_2104 "Неможливо завантажити прискорювачі клавіатури."
|
||||
IDS_2105 "Неможливо зарреєструвати необроблене (RAW) введ."
|
||||
IDS_2105 "Неможливо зарреєструвати необроблене (RAW) введення."
|
||||
IDS_2106 "%u"
|
||||
IDS_2107 "%u МБ (CHS: %i, %i, %i)"
|
||||
IDS_2108 "Дисковод %i (%s): %ls"
|
||||
@@ -487,9 +487,9 @@ BEGIN
|
||||
IDS_2119 "Вихід"
|
||||
IDS_2120 "ПЗУ не знайдені"
|
||||
IDS_2121 "Чи бажаєте ви зберегти налаштування?"
|
||||
IDS_2122 "Це призведе до холодної перезагрузки эмулируемой машины."
|
||||
IDS_2122 "Це призведе до холодної перезагрузки емульованої машини."
|
||||
IDS_2123 "Зберегти"
|
||||
IDS_2124 "О 86Box"
|
||||
IDS_2124 "Про 86Box"
|
||||
IDS_2125 "86Box v." EMU_VERSION
|
||||
|
||||
IDS_2126 "Емулятор старих комп'ютерів\n\nАвтори: Sarah Walker, Miran Grca, Fred N. van Kempen (waltje), SA1988, Tiseno100, reenigne, leilei, JohnElliott, greatpsycho, and others.\n\nВипускаєтся під ліцензією GNU General Public License версії 2 або більше пізніше. Додадкову інформацію см. у файлі LICENSE."
|
||||
@@ -501,7 +501,7 @@ BEGIN
|
||||
#define LIB_NAME_PCAP "libpcap"
|
||||
#endif
|
||||
IDS_2129 "Переконайтесь, що " LIB_NAME_PCAP " встановлений і ваше мережеве з'єднання, сумісне з " LIB_NAME_PCAP "."
|
||||
IDS_2130 "Недопустимая конфигурация"
|
||||
IDS_2130 "Неприпустима конфігурація"
|
||||
#ifdef _WIN32
|
||||
#define LIB_NAME_FREETYPE "freetype.dll"
|
||||
#else
|
||||
@@ -525,18 +525,18 @@ BEGIN
|
||||
IDS_2136 "Не виходити"
|
||||
IDS_2137 "Перезавантажити"
|
||||
IDS_2138 "Не перезавантажувати"
|
||||
IDS_2139 "Образи магнітооптичних дисків (*.IM?;*.MDI)\0*.IM?;*.MDI\0Всі файли (*.*)\0*.*\0"
|
||||
IDS_2140 "Образи CD-ROM (*.ISO;*.CUE)\0*.ISO;*.CUE\0Всі файли (*.*)\0*.*\0"
|
||||
IDS_2139 "Образи магнітооптичних дисків (*.IM?;*.MDI)\0*.IM?;*.MDI\0Усі файли (*.*)\0*.*\0"
|
||||
IDS_2140 "Образи CD-ROM (*.ISO;*.CUE)\0*.ISO;*.CUE\0Усі файли (*.*)\0*.*\0"
|
||||
IDS_2141 "Конфігурація пристрою %hs"
|
||||
IDS_2142 "Монітор у сплячому режимі"
|
||||
IDS_2143 "Шейдери OpenGL (*.GLSL)\0*.GLSL\0Все файлы (*.*)\0*.*\0"
|
||||
IDS_2143 "Шейдери OpenGL (*.GLSL)\0*.GLSL\0Усі файли (*.*)\0*.*\0"
|
||||
IDS_2144 "Параметри OpenGL"
|
||||
IDS_2145 "Ви завантажуєте непідтримувану конфігурацію"
|
||||
IDS_2146 "Вибір типів ЦП для цієї системної плати на даній емульованій машині відключено.\n\nЦе дозволяє вибрати процесор, який в іншому випадку не сумісний з вибраною материнською платою. Однак, ви можете зіткнутися з несумісністю з BIOS материнської плати або іншим ПО.\n\nВключення цього параметра офіційно не підтримується, і всі подані звіти про помилки можуть бути закриті як недійсні."
|
||||
IDS_2147 "Продовжити"
|
||||
IDS_2148 "Касета: %s"
|
||||
IDS_2149 "Образи касет (*.PCM;*.RAW;*.WAV;*.CAS)\0*.PCM;*.RAW;*.WAV;*.CAS\0Всі файли (*.*)\0*. *\0"
|
||||
IDS_2150 "Картидж %i: %ls"
|
||||
IDS_2149 "Образи касет (*.PCM;*.RAW;*.WAV;*.CAS)\0*.PCM;*.RAW;*.WAV;*.CAS\0Усі файли (*.*)\0*. *\0"
|
||||
IDS_2150 "Картридж %i: %ls"
|
||||
IDS_2151 "Образи картриджів (*.A;*.B;*.JRC)\0*.A;*.B;*.JRC\0Всі файли (*.*)\0*.*\0"
|
||||
IDS_2152 "Помилка ініціалізації рендерера"
|
||||
IDS_2153 "Неможливо ініціалізувати рендерер OpenGL (3.0). Будь ласка, використовуйте інший рендерер."
|
||||
@@ -570,7 +570,7 @@ BEGIN
|
||||
IDS_4112 "Вкажіть правильне ім'я файлу."
|
||||
IDS_4113 "Образ диску створено"
|
||||
IDS_4114 "Переконайтеся, що файл є доступним для читання."
|
||||
IDS_4115 "Переконайтеся, що файл зберігається в каталогі, доступному для запису."
|
||||
IDS_4115 "Переконайтеся, що файл зберігається в каталог, який є доступним для запису."
|
||||
IDS_4116 "Занадто великий образ диска"
|
||||
IDS_4117 "Не забудьте розмітити та відформатувати новостворений диск."
|
||||
IDS_4118 "Вибраний файл буде перезаписано. Ви впевнені, що хочете використовувати його?"
|
||||
|
||||
Reference in New Issue
Block a user