Merge branch 'master' into audio
This commit is contained in:
@@ -160,7 +160,8 @@ int GAMEBLASTER = 0; /* (C) sound option */
|
||||
int GUS = 0; /* (C) sound option */
|
||||
int SSI2001 = 0; /* (C) sound option */
|
||||
int voodoo_enabled = 0; /* (C) video option */
|
||||
uint32_t mem_size = 0; /* (C) memory size */
|
||||
uint32_t mem_size = 0; /* (C) memory size (Installed on system board)*/
|
||||
uint32_t isa_mem_size = 0; /* (C) memory size (ISA Memory Cards) */
|
||||
int cpu_use_dynarec = 0; /* (C) cpu uses/needs Dyna */
|
||||
int cpu = 0; /* (C) cpu type */
|
||||
int fpu_type = 0; /* (C) fpu type */
|
||||
@@ -976,9 +977,6 @@ pc_reset_hard_init(void)
|
||||
/* Reset and reconfigure the Sound Card layer. */
|
||||
sound_card_reset();
|
||||
|
||||
/* Reset any ISA memory cards. */
|
||||
isamem_reset();
|
||||
|
||||
/* Reset any ISA RTC cards. */
|
||||
isartc_reset();
|
||||
|
||||
|
||||
@@ -21,4 +21,12 @@ add_library(dev OBJECT bugger.c cassette.c cartridge.c hasp.c hwm.c hwm_lm75.c h
|
||||
|
||||
if(LASERXT)
|
||||
target_compile_definitions(dev PRIVATE USE_LASERXT)
|
||||
endif()
|
||||
|
||||
if(ISAMEM_RAMPAGE)
|
||||
target_compile_definitions(dev PRIVATE USE_ISAMEM_RAMPAGE)
|
||||
endif()
|
||||
|
||||
if(ISAMEM_IAB)
|
||||
target_compile_definitions(dev PRIVATE USE_ISAMEM_IAB)
|
||||
endif()
|
||||
@@ -54,15 +54,29 @@ ibm_5161_in(uint16_t port, void *priv)
|
||||
ret = dev->regs[port & 0x0007];
|
||||
|
||||
switch (port) {
|
||||
case 0x211:
|
||||
case 0x215:
|
||||
case 0x210: /* Write to latch expansion bus data (ED0-ED7) */
|
||||
/* Read to verify expansion bus data (ED0-ED7) */
|
||||
break;
|
||||
case 0x214: /* Write to latch data bus bits (DO - 07) */
|
||||
/* Read data bus bits (DO - D7) */
|
||||
break;
|
||||
case 0x211: /* Read high-order address bits (A8 - A 15) */
|
||||
case 0x215: /* Read high-order address bits (A8 - A 15) */
|
||||
ret = (get_last_addr() >> 8) & 0xff;
|
||||
break;
|
||||
case 0x212:
|
||||
case 0x216:
|
||||
case 0x212: /* Read low-order address bits (A0 - A7) */
|
||||
case 0x216: /* Read low-order address bits (A0 - A7) */
|
||||
ret = get_last_addr() & 0xff;
|
||||
break;
|
||||
case 0x213:
|
||||
case 0x213: /* Write 00 to disable expansion unit */
|
||||
/* Write 01 to enable expansion unit */
|
||||
/* Read status of expansion unit
|
||||
00 = enable/disable
|
||||
01 = wait-state request flag
|
||||
02-03 = not used
|
||||
04-07 = switch position
|
||||
1 = Off
|
||||
0 =On */
|
||||
ret = dev->regs[3] & 0x01;
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -84,6 +84,16 @@
|
||||
|
||||
#include "cpu.h"
|
||||
|
||||
#define ISAMEM_IBMXT_CARD 0
|
||||
#define ISAMEM_GENXT_CARD 1
|
||||
#define ISAMEM_IBMAT_CARD 2
|
||||
#define ISAMEM_GENAT_CARD 3
|
||||
#define ISAMEM_P5PAK_CARD 4
|
||||
#define ISAMEM_A6PAK_CARD 5
|
||||
#define ISAMEM_EMS5150_CARD 6
|
||||
#define ISAMEM_EV159_CARD 10
|
||||
#define ISAMEM_RAMPAGEXT_CARD 11
|
||||
#define ISAMEM_ABOVEBOARD_CARD 12
|
||||
|
||||
#define ISAMEM_DEBUG 0
|
||||
|
||||
@@ -95,6 +105,9 @@
|
||||
#define EMS_PGSIZE (16 << 10) /* one page is this big */
|
||||
#define EMS_MAXPAGE 4 /* number of viewport pages */
|
||||
|
||||
#define EXTRAM_CONVENTIONAL 0
|
||||
#define EXTRAM_HIGH 1
|
||||
#define EXTRAM_XMS 2
|
||||
|
||||
typedef struct {
|
||||
int8_t enabled; /* 1=ENABLED */
|
||||
@@ -398,28 +411,31 @@ isamem_init(const device_t *info)
|
||||
/* Do per-board initialization. */
|
||||
tot = 0;
|
||||
switch(dev->board) {
|
||||
case 0: /* IBM PC/XT Memory Expansion Card */
|
||||
case 2: /* Paradise Systems 5-PAK */
|
||||
case ISAMEM_IBMXT_CARD: /* IBM PC/XT Memory Expansion Card */
|
||||
case ISAMEM_GENXT_CARD: /* Generic PC/XT Memory Expansion Card */
|
||||
case ISAMEM_P5PAK_CARD: /* Paradise Systems 5-PAK */
|
||||
case ISAMEM_A6PAK_CARD: /* AST SixPakPlus */
|
||||
dev->total_size = device_get_config_int("size");
|
||||
dev->start_addr = device_get_config_int("start");
|
||||
tot = dev->total_size;
|
||||
break;
|
||||
|
||||
case 1: /* IBM PC/AT Memory Expansion Card */
|
||||
case ISAMEM_IBMAT_CARD: /* IBM PC/AT Memory Expansion Card */
|
||||
case ISAMEM_GENAT_CARD: /* Generic PC/AT Memory Expansion Card */
|
||||
dev->total_size = device_get_config_int("size");
|
||||
dev->start_addr = device_get_config_int("start");
|
||||
tot = dev->total_size;
|
||||
dev->flags |= FLAG_WIDE;
|
||||
break;
|
||||
|
||||
case 3: /* Micro Mainframe EMS-5150(T) */
|
||||
case ISAMEM_EMS5150_CARD: /* Micro Mainframe EMS-5150(T) */
|
||||
dev->base_addr = device_get_config_hex16("base");
|
||||
dev->total_size = device_get_config_int("size");
|
||||
dev->frame_addr = 0xD0000;
|
||||
dev->flags |= (FLAG_EMS | FLAG_CONFIG);
|
||||
break;
|
||||
|
||||
case 10: /* Everex EV-159 RAM 3000 */
|
||||
case ISAMEM_EV159_CARD: /* Everex EV-159 RAM 3000 */
|
||||
dev->base_addr = device_get_config_hex16("base");
|
||||
dev->total_size = device_get_config_int("size");
|
||||
dev->start_addr = device_get_config_int("start");
|
||||
@@ -433,7 +449,8 @@ isamem_init(const device_t *info)
|
||||
dev->frame_addr = 0xE0000;
|
||||
break;
|
||||
|
||||
case 11:
|
||||
case ISAMEM_RAMPAGEXT_CARD: /* AST RAMpage/XT */
|
||||
case ISAMEM_ABOVEBOARD_CARD: /* Intel AboveBoard */
|
||||
dev->base_addr = device_get_config_hex16("base");
|
||||
dev->total_size = device_get_config_int("size");
|
||||
dev->start_addr = device_get_config_int("start");
|
||||
@@ -496,8 +513,8 @@ dev->frame_addr = 0xE0000;
|
||||
t = tot;
|
||||
isamem_log("ISAMEM: RAM at %05iKB (%iKB)\n", addr>>10, t>>10);
|
||||
|
||||
dev->ext_ram[0].ptr = ptr;
|
||||
dev->ext_ram[0].base = addr;
|
||||
dev->ext_ram[EXTRAM_CONVENTIONAL].ptr = ptr;
|
||||
dev->ext_ram[EXTRAM_CONVENTIONAL].base = addr;
|
||||
|
||||
/* Create, initialize and enable the low-memory mapping. */
|
||||
mem_mapping_add(&dev->low_mapping, addr, t,
|
||||
@@ -507,7 +524,7 @@ dev->frame_addr = 0xE0000;
|
||||
ram_writeb,
|
||||
(dev->flags&FLAG_WIDE) ? ram_writew : NULL,
|
||||
NULL,
|
||||
ptr, MEM_MAPPING_EXTERNAL, &dev->ext_ram[0]);
|
||||
ptr, MEM_MAPPING_EXTERNAL, &dev->ext_ram[EXTRAM_CONVENTIONAL]);
|
||||
|
||||
/* Tell the memory system this is external RAM. */
|
||||
mem_set_mem_state(addr, t,
|
||||
@@ -531,8 +548,8 @@ dev->frame_addr = 0xE0000;
|
||||
|
||||
isamem_log("ISAMEM: RAM at %05iKB (%iKB)\n", addr>>10, t>>10);
|
||||
|
||||
dev->ext_ram[1].ptr = ptr;
|
||||
dev->ext_ram[1].base = addr + tot;
|
||||
dev->ext_ram[EXTRAM_HIGH].ptr = ptr;
|
||||
dev->ext_ram[EXTRAM_HIGH].base = addr + tot;
|
||||
|
||||
/* Update and enable the remap. */
|
||||
mem_mapping_set(&ram_remapped_mapping,
|
||||
@@ -540,7 +557,7 @@ dev->frame_addr = 0xE0000;
|
||||
ram_readb, ram_readw, NULL,
|
||||
ram_writeb, ram_writew, NULL,
|
||||
ptr, MEM_MAPPING_EXTERNAL,
|
||||
&dev->ext_ram[1]);
|
||||
&dev->ext_ram[EXTRAM_HIGH]);
|
||||
mem_mapping_disable(&ram_remapped_mapping);
|
||||
|
||||
/* Tell the memory system this is external RAM. */
|
||||
@@ -565,14 +582,14 @@ dev->frame_addr = 0xE0000;
|
||||
t = tot;
|
||||
isamem_log("ISAMEM: RAM at %05iKB (%iKB)\n", addr>>10, t>>10);
|
||||
|
||||
dev->ext_ram[2].ptr = ptr;
|
||||
dev->ext_ram[2].base = addr;
|
||||
dev->ext_ram[EXTRAM_XMS].ptr = ptr;
|
||||
dev->ext_ram[EXTRAM_XMS].base = addr;
|
||||
|
||||
/* Create, initialize and enable the high-memory mapping. */
|
||||
mem_mapping_add(&dev->high_mapping, addr, t,
|
||||
ram_readb, ram_readw, NULL,
|
||||
ram_writeb, ram_writew, NULL,
|
||||
ptr, MEM_MAPPING_EXTERNAL, &dev->ext_ram[2]);
|
||||
ptr, MEM_MAPPING_EXTERNAL, &dev->ext_ram[EXTRAM_XMS]);
|
||||
|
||||
/* Tell the memory system this is external RAM. */
|
||||
mem_set_mem_state(addr, t, MEM_READ_EXTERNAL | MEM_WRITE_EXTERNAL);
|
||||
@@ -583,6 +600,8 @@ dev->frame_addr = 0xE0000;
|
||||
addr += t;
|
||||
}
|
||||
|
||||
isa_mem_size += dev->total_size - (k >> 10);
|
||||
|
||||
/* If EMS is enabled, use the remainder for EMS. */
|
||||
if (dev->flags & FLAG_EMS) {
|
||||
/* EMS 3.2 cannot have more than 2048KB per board. */
|
||||
@@ -663,7 +682,7 @@ static const device_config_t ibmxt_config[] =
|
||||
},
|
||||
{
|
||||
"start", "Start Address", CONFIG_SPINNER, "", 256, "",
|
||||
{ 0, 640-64, 64 },
|
||||
{ 0, 576, 64 },
|
||||
{ { 0 } }
|
||||
},
|
||||
{
|
||||
@@ -674,23 +693,50 @@ static const device_config_t ibmxt_config[] =
|
||||
static const device_t ibmxt_device = {
|
||||
"IBM PC/XT Memory Expansion",
|
||||
DEVICE_ISA,
|
||||
0,
|
||||
ISAMEM_IBMXT_CARD,
|
||||
isamem_init, isamem_close, NULL,
|
||||
{ NULL }, NULL, NULL,
|
||||
ibmxt_config
|
||||
};
|
||||
|
||||
|
||||
static const device_config_t genericxt_config[] =
|
||||
{
|
||||
{
|
||||
"size", "Memory Size", CONFIG_SPINNER, "", 16, "",
|
||||
{ 0, 640, 16 },
|
||||
{ { 0 } }
|
||||
},
|
||||
{
|
||||
"start", "Start Address", CONFIG_SPINNER, "", 0, "",
|
||||
{ 0, 624, 16 },
|
||||
{ { 0 } }
|
||||
},
|
||||
{
|
||||
"", "", -1
|
||||
}
|
||||
};
|
||||
|
||||
static const device_t genericxt_device = {
|
||||
"Generic PC/XT Memory Expansion",
|
||||
DEVICE_ISA,
|
||||
ISAMEM_GENXT_CARD,
|
||||
isamem_init, isamem_close, NULL,
|
||||
{ NULL }, NULL, NULL,
|
||||
genericxt_config
|
||||
};
|
||||
|
||||
|
||||
static const device_config_t ibmat_config[] =
|
||||
{
|
||||
{
|
||||
"size", "Memory Size", CONFIG_SPINNER, "", 512, "",
|
||||
{ 0, 4096, 512 },
|
||||
{ 0, 12288, 512 },
|
||||
{ { 0 } }
|
||||
},
|
||||
{
|
||||
"start", "Start Address", CONFIG_SPINNER, "", 512, "",
|
||||
{ 0, 16128, 128 },
|
||||
{ 0, 15872, 512 },
|
||||
{ { 0 } }
|
||||
},
|
||||
{
|
||||
@@ -701,13 +747,40 @@ static const device_config_t ibmat_config[] =
|
||||
static const device_t ibmat_device = {
|
||||
"IBM PC/AT Memory Expansion",
|
||||
DEVICE_ISA,
|
||||
1,
|
||||
ISAMEM_IBMAT_CARD,
|
||||
isamem_init, isamem_close, NULL,
|
||||
{ NULL }, NULL, NULL,
|
||||
ibmat_config
|
||||
};
|
||||
|
||||
|
||||
static const device_config_t genericat_config[] =
|
||||
{
|
||||
{
|
||||
"size", "Memory Size", CONFIG_SPINNER, "", 512, "",
|
||||
{ 0, 16384, 512 },
|
||||
{ { 0 } }
|
||||
},
|
||||
{
|
||||
"start", "Start Address", CONFIG_SPINNER, "", 512, "",
|
||||
{ 0, 15872, 128 },
|
||||
{ { 0 } }
|
||||
},
|
||||
{
|
||||
"", "", -1
|
||||
}
|
||||
};
|
||||
|
||||
static const device_t genericat_device = {
|
||||
"Generic PC/AT Memory Expansion",
|
||||
DEVICE_ISA,
|
||||
ISAMEM_GENAT_CARD,
|
||||
isamem_init, isamem_close, NULL,
|
||||
{ NULL }, NULL, NULL,
|
||||
genericat_config
|
||||
};
|
||||
|
||||
|
||||
static const device_config_t p5pak_config[] =
|
||||
{
|
||||
{
|
||||
@@ -728,13 +801,40 @@ static const device_config_t p5pak_config[] =
|
||||
static const device_t p5pak_device = {
|
||||
"Paradise Systems 5-PAK",
|
||||
DEVICE_ISA,
|
||||
2,
|
||||
ISAMEM_P5PAK_CARD,
|
||||
isamem_init, isamem_close, NULL,
|
||||
{ NULL }, NULL, NULL,
|
||||
p5pak_config
|
||||
};
|
||||
|
||||
|
||||
static const device_config_t a6pak_config[] =
|
||||
{
|
||||
{
|
||||
"size", "Memory Size", CONFIG_SPINNER, "", 64, "",
|
||||
{ 0, 576, 64 },
|
||||
{ { 0 } }
|
||||
},
|
||||
{
|
||||
"start", "Start Address", CONFIG_SPINNER, "", 256, "",
|
||||
{ 64, 512, 64 },
|
||||
{ { 0 } }
|
||||
},
|
||||
{
|
||||
"", "", -1
|
||||
}
|
||||
};
|
||||
|
||||
static const device_t a6pak_device = {
|
||||
"AST SixPakPlus",
|
||||
DEVICE_ISA,
|
||||
ISAMEM_A6PAK_CARD,
|
||||
isamem_init, isamem_close, NULL,
|
||||
{ NULL }, NULL, NULL,
|
||||
a6pak_config
|
||||
};
|
||||
|
||||
|
||||
static const device_config_t ems5150_config[] =
|
||||
{
|
||||
{
|
||||
@@ -774,7 +874,7 @@ static const device_config_t ems5150_config[] =
|
||||
static const device_t ems5150_device = {
|
||||
"Micro Mainframe EMS-5150(T)",
|
||||
DEVICE_ISA,
|
||||
3,
|
||||
ISAMEM_EMS5150_CARD,
|
||||
isamem_init, isamem_close, NULL,
|
||||
{ NULL }, NULL, NULL,
|
||||
ems5150_config
|
||||
@@ -877,7 +977,7 @@ static const device_config_t ev159_config[] =
|
||||
static const device_t ev159_device = {
|
||||
"Everex EV-159 RAM 3000 Deluxe",
|
||||
DEVICE_ISA,
|
||||
10,
|
||||
ISAMEM_EV159_CARD,
|
||||
isamem_init, isamem_close, NULL,
|
||||
{ NULL }, NULL, NULL,
|
||||
ev159_config
|
||||
@@ -975,10 +1075,10 @@ static const device_config_t rampage_config[] =
|
||||
}
|
||||
};
|
||||
|
||||
static const device_t isamem_rampage_device = {
|
||||
static const device_t rampage_device = {
|
||||
"AST RAMpage/XT",
|
||||
DEVICE_ISA,
|
||||
11,
|
||||
ISAMEM_RAMPAGEXT_CARD,
|
||||
isamem_init, isamem_close, NULL,
|
||||
{ NULL }, NULL, NULL,
|
||||
rampage_config
|
||||
@@ -986,14 +1086,119 @@ static const device_t isamem_rampage_device = {
|
||||
#endif
|
||||
|
||||
|
||||
#ifdef USE_ISAMEM_IAB
|
||||
static const device_config_t iab_config[] =
|
||||
{
|
||||
{
|
||||
"base", "Address", CONFIG_HEX16, "", 0x0258, "", { 0 },
|
||||
{
|
||||
{
|
||||
"208H", 0x0208
|
||||
},
|
||||
{
|
||||
"218H", 0x0218
|
||||
},
|
||||
{
|
||||
"258H", 0x0258
|
||||
},
|
||||
{
|
||||
"268H", 0x0268
|
||||
},
|
||||
{
|
||||
"2A8H", 0x02A8
|
||||
},
|
||||
{
|
||||
"2B8H", 0x02B8
|
||||
},
|
||||
{
|
||||
"2E8H", 0x02E8
|
||||
},
|
||||
{
|
||||
""
|
||||
}
|
||||
},
|
||||
},
|
||||
{
|
||||
"frame", "Frame Address", CONFIG_HEX20, "", 0, "", { 0 },
|
||||
{
|
||||
{
|
||||
"Disabled", 0x00000
|
||||
},
|
||||
{
|
||||
"C000H", 0xC0000
|
||||
},
|
||||
{
|
||||
"D000H", 0xD0000
|
||||
},
|
||||
{
|
||||
"E000H", 0xE0000
|
||||
},
|
||||
{
|
||||
""
|
||||
}
|
||||
},
|
||||
},
|
||||
{
|
||||
"width", "I/O Width", CONFIG_SELECTION, "", 8, "", { 0 },
|
||||
{
|
||||
{
|
||||
"8-bit", 8
|
||||
},
|
||||
{
|
||||
"16-bit", 16
|
||||
},
|
||||
{
|
||||
""
|
||||
}
|
||||
},
|
||||
},
|
||||
{
|
||||
"speed", "Transfer Speed", CONFIG_SELECTION, "", 0, "", { 0 },
|
||||
{
|
||||
{
|
||||
"Standard", 0
|
||||
},
|
||||
{
|
||||
"High-Speed", 1
|
||||
},
|
||||
{
|
||||
""
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"size", "Memory Size", CONFIG_SPINNER, "", 128,
|
||||
"",
|
||||
{ 0, 8192, 128 },
|
||||
{ 0 }
|
||||
},
|
||||
{
|
||||
"", "", -1
|
||||
}
|
||||
};
|
||||
|
||||
static const device_t iab_device = {
|
||||
"Intel AboveBoard",
|
||||
DEVICE_ISA,
|
||||
ISAMEM_ABOVEBOARD_CARD,
|
||||
isamem_init, isamem_close, NULL,
|
||||
{ NULL }, NULL, NULL,
|
||||
iab_config
|
||||
};
|
||||
#endif
|
||||
|
||||
|
||||
static const struct {
|
||||
const char *internal_name;
|
||||
const device_t *dev;
|
||||
} boards[] = {
|
||||
{ "none", NULL },
|
||||
{ "none", NULL },
|
||||
{ "ibmxt", &ibmxt_device },
|
||||
{ "genericxt", &genericxt_device },
|
||||
{ "ibmat", &ibmat_device },
|
||||
{ "genericat", &genericat_device },
|
||||
{ "p5pak", &p5pak_device },
|
||||
{ "a6pak", &a6pak_device },
|
||||
{ "ems5150", &ems5150_device },
|
||||
{ "ev159", &ev159_device },
|
||||
#ifdef USE_ISAMEM_BRAT
|
||||
@@ -1003,9 +1208,9 @@ static const struct {
|
||||
{ "rampage", &rampage_device },
|
||||
#endif
|
||||
#ifdef USE_ISAMEM_IAB
|
||||
{ "iab", &iab_device },
|
||||
{ "iab", &iab_device },
|
||||
#endif
|
||||
{ "", NULL }
|
||||
{ "", NULL }
|
||||
};
|
||||
|
||||
|
||||
@@ -1014,6 +1219,9 @@ isamem_reset(void)
|
||||
{
|
||||
int k, i;
|
||||
|
||||
/* We explicitly set to zero here or bad things happen */
|
||||
isa_mem_size = 0;
|
||||
|
||||
for (i = 0; i < ISAMEM_MAX; i++) {
|
||||
k = isamem_type[i];
|
||||
if (k == 0) continue;
|
||||
|
||||
@@ -83,6 +83,11 @@
|
||||
#include <86box/isartc.h>
|
||||
|
||||
|
||||
#define ISARTC_EV170 0
|
||||
#define ISARTC_DTK 1
|
||||
#define ISARTC_P5PAK 2
|
||||
#define ISARTC_A6PAK 3
|
||||
|
||||
#define ISARTC_DEBUG 0
|
||||
|
||||
|
||||
@@ -506,7 +511,7 @@ isartc_init(const device_t *info)
|
||||
|
||||
/* Do per-board initialization. */
|
||||
switch(dev->board) {
|
||||
case 0: /* Everex EV-170 Magic I/O */
|
||||
case ISARTC_EV170: /* Everex EV-170 Magic I/O */
|
||||
dev->flags |= FLAG_YEAR80;
|
||||
dev->base_addr = device_get_config_hex16("base");
|
||||
dev->base_addrsz = 32;
|
||||
@@ -519,7 +524,7 @@ isartc_init(const device_t *info)
|
||||
dev->year = MM67_AL_DOM; /* year, NON STANDARD */
|
||||
break;
|
||||
|
||||
case 1: /* DTK PII-147 Hexa I/O Plus */
|
||||
case ISARTC_DTK: /* DTK PII-147 Hexa I/O Plus */
|
||||
dev->flags |= FLAG_YEARBCD;
|
||||
dev->base_addr = device_get_config_hex16("base");
|
||||
dev->base_addrsz = 32;
|
||||
@@ -531,7 +536,8 @@ isartc_init(const device_t *info)
|
||||
dev->year = MM67_AL_HUNTEN; /* year, NON STANDARD */
|
||||
break;
|
||||
|
||||
case 2: /* Paradise Systems 5PAK */
|
||||
case ISARTC_P5PAK: /* Paradise Systems 5PAK */
|
||||
case ISARTC_A6PAK: /* AST SixPakPlus */
|
||||
dev->flags |= FLAG_YEAR80;
|
||||
dev->base_addr = 0x02c0;
|
||||
dev->base_addrsz = 32;
|
||||
@@ -627,7 +633,7 @@ static const device_config_t ev170_config[] = {
|
||||
static const device_t ev170_device = {
|
||||
"Everex EV-170 Magic I/O",
|
||||
DEVICE_ISA,
|
||||
0,
|
||||
ISARTC_EV170,
|
||||
isartc_init, isartc_close, NULL,
|
||||
{ NULL }, NULL, NULL,
|
||||
ev170_config
|
||||
@@ -657,7 +663,7 @@ static const device_config_t pii147_config[] = {
|
||||
static const device_t pii147_device = {
|
||||
"DTK PII-147 Hexa I/O Plus",
|
||||
DEVICE_ISA,
|
||||
1,
|
||||
ISARTC_DTK,
|
||||
isartc_init, isartc_close, NULL,
|
||||
{ NULL }, NULL, NULL,
|
||||
pii147_config
|
||||
@@ -693,13 +699,49 @@ static const device_config_t p5pak_config[] = {
|
||||
static const device_t p5pak_device = {
|
||||
"Paradise Systems 5-PAK",
|
||||
DEVICE_ISA,
|
||||
2,
|
||||
ISARTC_P5PAK,
|
||||
isartc_init, isartc_close, NULL,
|
||||
{ NULL }, NULL, NULL,
|
||||
p5pak_config
|
||||
};
|
||||
|
||||
|
||||
static const device_config_t a6pak_config[] = {
|
||||
{
|
||||
"irq", "IRQ", CONFIG_SELECTION, "", -1, "", { 0 },
|
||||
{
|
||||
{
|
||||
"Disabled", -1
|
||||
},
|
||||
{
|
||||
"IRQ2", 2
|
||||
},
|
||||
{
|
||||
"IRQ3", 3
|
||||
},
|
||||
{
|
||||
"IRQ5", 5
|
||||
},
|
||||
{
|
||||
""
|
||||
}
|
||||
},
|
||||
},
|
||||
{
|
||||
"", "", -1
|
||||
}
|
||||
};
|
||||
|
||||
static const device_t a6pak_device = {
|
||||
"AST SixPakPlus",
|
||||
DEVICE_ISA,
|
||||
ISARTC_A6PAK,
|
||||
isartc_init, isartc_close, NULL,
|
||||
{ NULL }, NULL, NULL,
|
||||
a6pak_config
|
||||
};
|
||||
|
||||
|
||||
static const struct {
|
||||
const char *internal_name;
|
||||
const device_t *dev;
|
||||
@@ -708,6 +750,7 @@ static const struct {
|
||||
{ "ev170", &ev170_device },
|
||||
{ "pii147", &pii147_device },
|
||||
{ "p5pak", &p5pak_device },
|
||||
{ "a6pak", &a6pak_device },
|
||||
{ "", NULL },
|
||||
};
|
||||
|
||||
|
||||
@@ -55,6 +55,17 @@
|
||||
#define STAT_IFULL 0x02
|
||||
#define STAT_OFULL 0x01
|
||||
|
||||
// Keyboard Types
|
||||
#define KBD_TYPE_PC81 0
|
||||
#define KBD_TYPE_PC82 1
|
||||
#define KBD_TYPE_XT82 2
|
||||
#define KBD_TYPE_XT86 3
|
||||
#define KBD_TYPE_COMPAQ 4
|
||||
#define KBD_TYPE_TANDY 5
|
||||
#define KBD_TYPE_TOSHIBA 6
|
||||
#define KBD_TYPE_VTECH 7
|
||||
#define KBD_TYPE_OLIVETTI 8
|
||||
#define KBD_TYPE_ZENITH 9
|
||||
|
||||
typedef struct {
|
||||
int want_irq;
|
||||
@@ -357,8 +368,8 @@ kbd_log(const char *fmt, ...)
|
||||
#endif
|
||||
|
||||
static uint8_t
|
||||
get_fdd_switch_settings(){
|
||||
|
||||
get_fdd_switch_settings() {
|
||||
|
||||
int i, fdd_count = 0;
|
||||
|
||||
for (i = 0; i < FDD_NUM; i++) {
|
||||
@@ -369,20 +380,18 @@ get_fdd_switch_settings(){
|
||||
if (!fdd_count)
|
||||
return 0x00;
|
||||
else
|
||||
return ((fdd_count - 1) << 6) | 0x01;
|
||||
|
||||
return ((fdd_count - 1) << 6) | 0x01;
|
||||
}
|
||||
|
||||
static uint8_t
|
||||
get_videomode_switch_settings(){
|
||||
|
||||
get_videomode_switch_settings() {
|
||||
|
||||
if (video_is_mda())
|
||||
return 0x30;
|
||||
else if (video_is_cga())
|
||||
return 0x20; /* 0x10 would be 40x25 */
|
||||
else
|
||||
return 0x00;
|
||||
|
||||
return 0x00;
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -392,7 +401,7 @@ kbd_poll(void *priv)
|
||||
|
||||
timer_advance_u64(&kbd->send_delay_timer, 1000 * TIMER_USEC);
|
||||
|
||||
if (!(kbd->pb & 0x40) && (kbd->type != 5))
|
||||
if (!(kbd->pb & 0x40) && (kbd->type != KBD_TYPE_TANDY))
|
||||
return;
|
||||
|
||||
if (kbd->want_irq) {
|
||||
@@ -504,7 +513,7 @@ kbd_write(uint16_t port, uint8_t val, void *priv)
|
||||
xtkbd_t *kbd = (xtkbd_t *)priv;
|
||||
|
||||
switch (port) {
|
||||
case 0x61:
|
||||
case 0x61: /* Keyboard Control Register (aka Port B) */
|
||||
if (!(kbd->pb & 0x40) && (val & 0x40)) {
|
||||
key_queue_start = key_queue_end = 0;
|
||||
kbd->want_irq = 0;
|
||||
@@ -514,9 +523,9 @@ kbd_write(uint16_t port, uint8_t val, void *priv)
|
||||
kbd->pb = val;
|
||||
ppi.pb = val;
|
||||
|
||||
timer_process();
|
||||
timer_process();
|
||||
|
||||
if ((kbd->type <= 1) && (cassette != NULL))
|
||||
if (((kbd->type == KBD_TYPE_PC81) || (kbd->type == KBD_TYPE_PC82)) && (cassette != NULL))
|
||||
pc_cas_set_motor(cassette, (kbd->pb & 0x08) == 0);
|
||||
|
||||
speaker_update();
|
||||
@@ -535,13 +544,13 @@ kbd_write(uint16_t port, uint8_t val, void *priv)
|
||||
}
|
||||
|
||||
#ifdef ENABLE_KEYBOARD_XT_LOG
|
||||
if (kbd->type <= 1)
|
||||
if ((kbd->type == KBD_TYPE_PC81) || (kbd->type == KBD_TYPE_PC82))
|
||||
kbd_log("Cassette motor is %s\n", !(val & 0x08) ? "ON" : "OFF");
|
||||
#endif
|
||||
break;
|
||||
#ifdef ENABLE_KEYBOARD_XT_LOG
|
||||
case 0x62:
|
||||
if (kbd->type <= 1)
|
||||
case 0x62: /* Switch Register (aka Port C) */
|
||||
if ((kbd->type == KBD_TYPE_PC81) || (kbd->type == KBD_TYPE_PC82))
|
||||
kbd_log("Cassette IN is %i\n", !!(val & 0x10));
|
||||
break;
|
||||
#endif
|
||||
@@ -554,16 +563,17 @@ kbd_read(uint16_t port, void *priv)
|
||||
{
|
||||
xtkbd_t *kbd = (xtkbd_t *)priv;
|
||||
uint8_t ret = 0xff;
|
||||
|
||||
|
||||
switch (port) {
|
||||
case 0x60:
|
||||
if ((kbd->pb & 0x80) && ((kbd->type <= 3) || (kbd->type == 9))) {
|
||||
if (kbd->type <= 1)
|
||||
case 0x60: /* Keyboard Data Register (aka Port A) */
|
||||
if ((kbd->pb & 0x80) && ((kbd->type == KBD_TYPE_PC81) || (kbd->type == KBD_TYPE_PC82)
|
||||
|| (kbd->type == KBD_TYPE_XT82) || (kbd->type == KBD_TYPE_XT86)
|
||||
|| (kbd->type == KBD_TYPE_ZENITH))) {
|
||||
if ((kbd->type == KBD_TYPE_PC81) || (kbd->type == KBD_TYPE_PC82))
|
||||
ret = (kbd->pd & ~0x02) | (hasfpu ? 0x02 : 0x00);
|
||||
else if ((kbd->type == 2) || (kbd->type == 3))
|
||||
else if ((kbd->type == KBD_TYPE_XT82) || (kbd->type == KBD_TYPE_XT86))
|
||||
ret = 0xff; /* According to Ruud on the PCem forum, this is supposed to return 0xFF on the XT. */
|
||||
else if (kbd->type == 9) {
|
||||
else if (kbd->type == KBD_TYPE_ZENITH) {
|
||||
/* Zenith Data Systems Z-151
|
||||
* SW1 switch settings:
|
||||
* bits 6-7: floppy drive number
|
||||
@@ -586,32 +596,41 @@ kbd_read(uint16_t port, void *priv)
|
||||
ret = kbd->pa;
|
||||
break;
|
||||
|
||||
case 0x61:
|
||||
case 0x61: /* Keyboard Control Register (aka Port B) */
|
||||
ret = kbd->pb;
|
||||
break;
|
||||
|
||||
case 0x62:
|
||||
if (kbd->type == 0)
|
||||
ret = 0x00;
|
||||
else if (kbd->type == 1) {
|
||||
if (kbd->pb & 0x04)
|
||||
ret = ((mem_size - 64) / 32) & 0x0f;
|
||||
case 0x62: /* Switch Register (aka Port C) */
|
||||
if ((kbd->type == KBD_TYPE_PC81) || (kbd->type == KBD_TYPE_PC82)) {
|
||||
if (kbd->pb & 0x04) /* PB2 */
|
||||
switch (mem_size + isa_mem_size) {
|
||||
case 64:
|
||||
case 48:
|
||||
case 32:
|
||||
case 16:
|
||||
ret = 0x00;
|
||||
break;
|
||||
default:
|
||||
ret = (((mem_size + isa_mem_size) - 64) / 32) & 0x0f;
|
||||
break;
|
||||
}
|
||||
else
|
||||
ret = ((mem_size - 64) / 32) >> 4;
|
||||
} else if (kbd->type == 8 || kbd->type == 9) {
|
||||
ret = (((mem_size + isa_mem_size) - 64) / 32) >> 4;
|
||||
} else if (kbd->type == KBD_TYPE_OLIVETTI
|
||||
|| kbd->type == KBD_TYPE_ZENITH) {
|
||||
/* Olivetti M19 or Zenith Data Systems Z-151 */
|
||||
if (kbd->pb & 0x04)
|
||||
if (kbd->pb & 0x04) /* PB2 */
|
||||
ret = kbd->pd & 0xbf;
|
||||
else
|
||||
else
|
||||
ret = kbd->pd >> 4;
|
||||
} else {
|
||||
if (kbd->pb & 0x08)
|
||||
if (kbd->pb & 0x08) /* PB3 */
|
||||
ret = kbd->pd >> 4;
|
||||
else {
|
||||
/* LaserXT = Always 512k RAM;
|
||||
LaserXT/3 = Bit 0: set = 512k, clear = 256k. */
|
||||
#if defined(DEV_BRANCH) && defined(USE_LASERXT)
|
||||
if (kbd->type == 6)
|
||||
if (kbd->type == KBD_TYPE_TOSHIBA)
|
||||
ret = ((mem_size == 512) ? 0x0d : 0x0c) | (hasfpu ? 0x02 : 0x00);
|
||||
else
|
||||
#endif
|
||||
@@ -622,19 +641,21 @@ kbd_read(uint16_t port, void *priv)
|
||||
|
||||
/* This is needed to avoid error 131 (cassette error).
|
||||
This is serial read: bit 5 = clock, bit 4 = data, cassette header is 256 x 0xff. */
|
||||
if (kbd->type <= 1) {
|
||||
if ((kbd->type == KBD_TYPE_PC81) || (kbd->type == KBD_TYPE_PC82)) {
|
||||
if (cassette == NULL)
|
||||
ret |= (ppispeakon ? 0x10 : 0);
|
||||
else
|
||||
ret |= (pc_cas_get_inp(cassette) ? 0x10 : 0);
|
||||
}
|
||||
|
||||
if (kbd->type == 5)
|
||||
if (kbd->type == KBD_TYPE_TANDY)
|
||||
ret |= (tandy1k_eeprom_read() ? 0x10 : 0);
|
||||
break;
|
||||
|
||||
case 0x63:
|
||||
if ((kbd->type == 2) || (kbd->type == 3) || (kbd->type == 4) || (kbd->type == 6))
|
||||
case 0x63: /* Keyboard Configuration Register (aka Port D) */
|
||||
if ((kbd->type == KBD_TYPE_XT82) || (kbd->type == KBD_TYPE_XT86)
|
||||
|| (kbd->type == KBD_TYPE_COMPAQ)
|
||||
|| (kbd->type == KBD_TYPE_TOSHIBA))
|
||||
ret = kbd->pd;
|
||||
break;
|
||||
}
|
||||
@@ -685,9 +706,14 @@ kbd_init(const device_t *info)
|
||||
|
||||
video_reset(gfxcard);
|
||||
|
||||
if ((kbd->type <= 3) || (kbd->type == 4) || (kbd->type == 6) || (kbd->type == 8)) {
|
||||
if ((kbd->type == KBD_TYPE_PC81) || (kbd->type == KBD_TYPE_PC82)
|
||||
|| (kbd->type == KBD_TYPE_XT82) || (kbd->type <= KBD_TYPE_XT86)
|
||||
|| (kbd->type == KBD_TYPE_COMPAQ)
|
||||
|| (kbd->type == KBD_TYPE_TOSHIBA)
|
||||
|| (kbd->type == KBD_TYPE_OLIVETTI)) {
|
||||
|
||||
/* DIP switch readout: bit set = OFF, clear = ON. */
|
||||
if (kbd->type == 8)
|
||||
if (kbd->type == KBD_TYPE_OLIVETTI)
|
||||
/* Olivetti M19
|
||||
* Jumpers J1, J2 - monitor type.
|
||||
* 01 - mono (high-res)
|
||||
@@ -699,10 +725,13 @@ kbd_init(const device_t *info)
|
||||
/* Switches 7, 8 - floppy drives. */
|
||||
kbd->pd = get_fdd_switch_settings();
|
||||
|
||||
/* Siitches 5, 6 - video card type */
|
||||
kbd->pd |= get_videomode_switch_settings();
|
||||
|
||||
/* Switches 3, 4 - memory size. */
|
||||
if ((kbd->type == 3) || (kbd->type == 4) || (kbd->type == 6)) {
|
||||
if ((kbd->type == KBD_TYPE_XT86)
|
||||
|| (kbd->type == KBD_TYPE_COMPAQ)
|
||||
|| (kbd->type == KBD_TYPE_TOSHIBA)) {
|
||||
switch (mem_size) {
|
||||
case 256:
|
||||
kbd->pd |= 0x00;
|
||||
@@ -718,34 +747,49 @@ kbd_init(const device_t *info)
|
||||
kbd->pd |= 0x0c;
|
||||
break;
|
||||
}
|
||||
} else if (kbd->type >= 1) {
|
||||
} else if (kbd->type == KBD_TYPE_XT82) {
|
||||
switch (mem_size) {
|
||||
case 64:
|
||||
case 64: /* 1x64k */
|
||||
kbd->pd |= 0x00;
|
||||
break;
|
||||
case 128:
|
||||
case 128: /* 2x64k */
|
||||
kbd->pd |= 0x04;
|
||||
break;
|
||||
case 192:
|
||||
case 192: /* 3x64k */
|
||||
kbd->pd |= 0x08;
|
||||
break;
|
||||
case 256:
|
||||
case 256: /* 4x64k */
|
||||
default:
|
||||
kbd->pd |= 0x0c;
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
} else if (kbd->type == KBD_TYPE_PC82) {
|
||||
switch (mem_size) {
|
||||
case 16:
|
||||
kbd->pd |= 0x00;
|
||||
break;
|
||||
case 32:
|
||||
kbd->pd |= 0x04;
|
||||
break;
|
||||
case 48:
|
||||
case 192: /* 3x64k, not supported by stock BIOS due to bugs */
|
||||
kbd->pd |= 0x08;
|
||||
break;
|
||||
case 64:
|
||||
case 64: /* 4x16k */
|
||||
case 96: /* 2x32k + 2x16k */
|
||||
case 128: /* 4x32k */
|
||||
case 160: /* 2x64k + 2x16k */
|
||||
case 224: /* 3x64k + 1x32k */
|
||||
case 256: /* 4x64k */
|
||||
default:
|
||||
kbd->pd |= 0x0c;
|
||||
break;
|
||||
}
|
||||
} else { /* really just the PC '81 */
|
||||
switch (mem_size) {
|
||||
case 16: /* 1x16k */
|
||||
kbd->pd |= 0x00;
|
||||
break;
|
||||
case 32: /* 2x16k */
|
||||
kbd->pd |= 0x04;
|
||||
break;
|
||||
case 48: /* 3x16k */
|
||||
kbd->pd |= 0x08;
|
||||
break;
|
||||
case 64: /* 4x16k */
|
||||
default:
|
||||
kbd->pd |= 0x0c;
|
||||
break;
|
||||
@@ -755,7 +799,7 @@ kbd_init(const device_t *info)
|
||||
/* Switch 2 - 8087 FPU. */
|
||||
if (hasfpu)
|
||||
kbd->pd |= 0x02;
|
||||
} else if (kbd-> type == 9) {
|
||||
} else if (kbd-> type == KBD_TYPE_ZENITH) {
|
||||
/* Zenith Data Systems Z-151
|
||||
* SW2 switch settings:
|
||||
* bit 7: monitor frequency
|
||||
@@ -799,8 +843,8 @@ kbd_init(const device_t *info)
|
||||
|
||||
keyboard_set_table(scancode_xt);
|
||||
|
||||
is_tandy = (kbd->type == 5);
|
||||
is_t1x00 = (kbd->type == 6);
|
||||
is_tandy = (kbd->type == KBD_TYPE_TANDY);
|
||||
is_t1x00 = (kbd->type == KBD_TYPE_TOSHIBA);
|
||||
|
||||
is_amstrad = 0;
|
||||
|
||||
@@ -831,7 +875,7 @@ kbd_close(void *priv)
|
||||
const device_t keyboard_pc_device = {
|
||||
"IBM PC Keyboard (1981)",
|
||||
0,
|
||||
0,
|
||||
KBD_TYPE_PC81,
|
||||
kbd_init,
|
||||
kbd_close,
|
||||
kbd_reset,
|
||||
@@ -841,7 +885,7 @@ const device_t keyboard_pc_device = {
|
||||
const device_t keyboard_pc82_device = {
|
||||
"IBM PC Keyboard (1982)",
|
||||
0,
|
||||
1,
|
||||
KBD_TYPE_PC82,
|
||||
kbd_init,
|
||||
kbd_close,
|
||||
kbd_reset,
|
||||
@@ -851,7 +895,7 @@ const device_t keyboard_pc82_device = {
|
||||
const device_t keyboard_xt_device = {
|
||||
"XT (1982) Keyboard",
|
||||
0,
|
||||
2,
|
||||
KBD_TYPE_XT82,
|
||||
kbd_init,
|
||||
kbd_close,
|
||||
kbd_reset,
|
||||
@@ -861,7 +905,7 @@ const device_t keyboard_xt_device = {
|
||||
const device_t keyboard_xt86_device = {
|
||||
"XT (1986) Keyboard",
|
||||
0,
|
||||
3,
|
||||
KBD_TYPE_XT86,
|
||||
kbd_init,
|
||||
kbd_close,
|
||||
kbd_reset,
|
||||
@@ -871,7 +915,7 @@ const device_t keyboard_xt86_device = {
|
||||
const device_t keyboard_xt_compaq_device = {
|
||||
"Compaq Portable Keyboard",
|
||||
0,
|
||||
4,
|
||||
KBD_TYPE_COMPAQ,
|
||||
kbd_init,
|
||||
kbd_close,
|
||||
kbd_reset,
|
||||
@@ -881,7 +925,7 @@ const device_t keyboard_xt_compaq_device = {
|
||||
const device_t keyboard_tandy_device = {
|
||||
"Tandy 1000 Keyboard",
|
||||
0,
|
||||
5,
|
||||
KBD_TYPE_TANDY,
|
||||
kbd_init,
|
||||
kbd_close,
|
||||
kbd_reset,
|
||||
@@ -891,7 +935,7 @@ const device_t keyboard_tandy_device = {
|
||||
const device_t keyboard_xt_t1x00_device = {
|
||||
"Toshiba T1x00 Keyboard",
|
||||
0,
|
||||
6,
|
||||
KBD_TYPE_TOSHIBA,
|
||||
kbd_init,
|
||||
kbd_close,
|
||||
kbd_reset,
|
||||
@@ -902,7 +946,7 @@ const device_t keyboard_xt_t1x00_device = {
|
||||
const device_t keyboard_xt_lxt3_device = {
|
||||
"VTech Laser XT3 Keyboard",
|
||||
0,
|
||||
7,
|
||||
KBD_TYPE_VTECH,
|
||||
kbd_init,
|
||||
kbd_close,
|
||||
kbd_reset,
|
||||
@@ -913,7 +957,7 @@ const device_t keyboard_xt_lxt3_device = {
|
||||
const device_t keyboard_xt_olivetti_device = {
|
||||
"Olivetti XT Keyboard",
|
||||
0,
|
||||
8,
|
||||
KBD_TYPE_OLIVETTI,
|
||||
kbd_init,
|
||||
kbd_close,
|
||||
kbd_reset,
|
||||
@@ -923,7 +967,7 @@ const device_t keyboard_xt_olivetti_device = {
|
||||
const device_t keyboard_xt_zenith_device = {
|
||||
"Zenith XT Keyboard",
|
||||
0,
|
||||
9,
|
||||
KBD_TYPE_ZENITH,
|
||||
kbd_init,
|
||||
kbd_close,
|
||||
kbd_reset,
|
||||
|
||||
@@ -2311,7 +2311,7 @@ fdc_reset(void *priv)
|
||||
fdc->max_track = (fdc->flags & FDC_FLAG_MORE_TRACKS) ? 85 : 79;
|
||||
|
||||
fdc_remove(fdc);
|
||||
fdc_set_base(fdc, (fdc->flags & FDC_FLAG_PCJR) ? 0x00f0 : 0x03f0);
|
||||
fdc_set_base(fdc, (fdc->flags & FDC_FLAG_PCJR) ? FDC_PRIMARY_PCJR_ADDR : FDC_PRIMARY_ADDR);
|
||||
|
||||
current_drive = 0;
|
||||
|
||||
@@ -2342,12 +2342,12 @@ fdc_init(const device_t *info)
|
||||
|
||||
fdc->flags = info->local;
|
||||
|
||||
fdc->irq = 6;
|
||||
fdc->irq = FDC_PRIMARY_IRQ;
|
||||
|
||||
if (fdc->flags & FDC_FLAG_PCJR)
|
||||
timer_add(&fdc->watchdog_timer, fdc_watchdog_poll, fdc, 0);
|
||||
else
|
||||
fdc->dma_ch = 2;
|
||||
fdc->dma_ch = FDC_PRIMARY_DMA;
|
||||
|
||||
fdc_log("FDC added: %04X (flags: %08X)\n", fdc->base_address, fdc->flags);
|
||||
|
||||
|
||||
@@ -101,7 +101,7 @@ b215_init(const device_t *info)
|
||||
rom_init(&dev->rom, ROM_B215, ROM_ADDR, 0x2000, 0x1fff, 0, MEM_MAPPING_EXTERNAL);
|
||||
|
||||
dev->fdc_controller = device_add(&fdc_um8398_device);
|
||||
io_sethandler(0x03f0, 1, b215_read, NULL, NULL, NULL, NULL, NULL, dev);
|
||||
io_sethandler(FDC_PRIMARY_ADDR, 1, b215_read, NULL, NULL, NULL, NULL, NULL, dev);
|
||||
|
||||
return dev;
|
||||
}
|
||||
|
||||
@@ -122,7 +122,8 @@ extern int sound_is_float, /* (C) sound uses FP values */
|
||||
GUS, GUSMAX, /* (C) sound option */
|
||||
SSI2001, /* (C) sound option */
|
||||
voodoo_enabled; /* (C) video option */
|
||||
extern uint32_t mem_size; /* (C) memory size */
|
||||
extern uint32_t mem_size; /* (C) memory size (Installed on system board) */
|
||||
extern uint32_t isa_mem_size; /* (C) memory size (ISA Memory Cards) */
|
||||
extern int cpu, /* (C) cpu type */
|
||||
cpu_use_dynarec, /* (C) cpu uses/needs Dyna */
|
||||
fpu_type; /* (C) fpu type */
|
||||
|
||||
@@ -24,6 +24,22 @@
|
||||
|
||||
extern int fdc_type;
|
||||
|
||||
#define FDC_PRIMARY_ADDR 0x03f0
|
||||
#define FDC_PRIMARY_IRQ 6
|
||||
#define FDC_PRIMARY_DMA 2
|
||||
#define FDC_PRIMARY_PCJR_ADDR 0x00f0
|
||||
#define FDC_PRIMARY_PCJR_IRQ 6
|
||||
#define FDC_PRIMARY_PCJR_DMA 2
|
||||
#define FDC_SECONDARY_ADDR 0x0370
|
||||
#define FDC_SECONDARY_IRQ 6
|
||||
#define FDC_SECONDARY_DMA 2
|
||||
#define FDC_TERTIARY_ADDR 0x0360
|
||||
#define FDC_TERTIARY_IRQ 6
|
||||
#define FDC_TERTIARY_DMA 2
|
||||
#define FDC_QUATERNARY_ADDR 0x03e0
|
||||
#define FDC_QUATERNARY_IRQ 6
|
||||
#define FDC_QUATERNARY_DMA 2
|
||||
|
||||
#define FDC_FLAG_PCJR 0x01 /* PCjr */
|
||||
#define FDC_FLAG_DISKCHG_ACTLOW 0x02 /* Amstrad, PS/1, PS/2 ISA */
|
||||
#define FDC_FLAG_AT 0x04 /* AT+, PS/x */
|
||||
|
||||
@@ -19,6 +19,8 @@
|
||||
* Copyright 2016-2020 Miran Grca.
|
||||
* Copyright 2016-2020 TheCollector1995.
|
||||
*/
|
||||
#ifndef SOUND_MPU401_H
|
||||
# define SOUND_MPU401_H
|
||||
|
||||
#define MPU401_VERSION 0x15
|
||||
#define MPU401_REVISION 0x01
|
||||
@@ -160,3 +162,6 @@ extern void mpu401_irq_attach(mpu_t *mpu, void (*ext_irq_update)(void *priv, int
|
||||
|
||||
extern int MPU401_InputSysex(void *p, uint8_t *buffer, uint32_t len, int abort);
|
||||
extern void MPU401_InputMsg(void *p, uint8_t *msg, uint32_t len);
|
||||
|
||||
|
||||
#endif /*SOUND_MPU401_H*/
|
||||
|
||||
@@ -40,6 +40,7 @@
|
||||
#include "cpu.h"
|
||||
#include <86box/video.h>
|
||||
#include <86box/machine.h>
|
||||
#include <86box/isamem.h>
|
||||
|
||||
|
||||
int bios_only = 0;
|
||||
@@ -101,6 +102,9 @@ machine_init_ex(int m)
|
||||
/* Prepare some video-related things if we're using internal
|
||||
or no video. */
|
||||
video_pre_reset(gfxcard);
|
||||
|
||||
/* Reset any ISA memory cards. */
|
||||
isamem_reset();
|
||||
}
|
||||
|
||||
/* All good, boot the machine! */
|
||||
|
||||
@@ -105,7 +105,7 @@ const machine_type_t machine_types[] = {
|
||||
const machine_t machines[] = {
|
||||
/* 8088 Machines */
|
||||
{ "[8088] IBM PC (1981)", "ibmpc", MACHINE_TYPE_8088, CPU_PKG_8088, 0, 0, 0, 0, 0, 0, 0, MACHINE_PC, 16, 64, 16, 0, machine_pc_init, NULL },
|
||||
{ "[8088] IBM PC (1982)", "ibmpc82", MACHINE_TYPE_8088, CPU_PKG_8088, 0, 0, 0, 0, 0, 0, 0, MACHINE_PC, 256, 256, 256, 0, machine_pc82_init, NULL },
|
||||
{ "[8088] IBM PC (1982)", "ibmpc82", MACHINE_TYPE_8088, CPU_PKG_8088, 0, 0, 0, 0, 0, 0, 0, MACHINE_PC, 64, 256, 64, 0, machine_pc82_init, NULL },
|
||||
{ "[8088] IBM PCjr", "ibmpcjr", MACHINE_TYPE_8088, CPU_PKG_8088, 0, 4772728, 4772728, 0, 0, 0, 0, MACHINE_PC | MACHINE_VIDEO_FIXED | MACHINE_CARTRIDGE, 128, 640, 128, 0, machine_pcjr_init, pcjr_get_device },
|
||||
{ "[8088] IBM XT (1982)", "ibmxt", MACHINE_TYPE_8088, CPU_PKG_8088, 0, 0, 0, 0, 0, 0, 0, MACHINE_PC, 64, 256, 64, 0, machine_xt_init, NULL },
|
||||
{ "[8088] IBM XT (1986)", "ibmxt86", MACHINE_TYPE_8088, CPU_PKG_8088, 0, 0, 0, 0, 0, 0, 0, MACHINE_PC, 256, 640, 64, 0, machine_xt86_init, NULL },
|
||||
|
||||
@@ -1259,6 +1259,9 @@ static const device_config_t aha_154xb_config[] = {
|
||||
{
|
||||
"D800H", 0xd8000
|
||||
},
|
||||
{
|
||||
"DC00H", 0xdc000
|
||||
},
|
||||
{
|
||||
""
|
||||
}
|
||||
@@ -1357,6 +1360,9 @@ static const device_config_t aha_154x_config[] = {
|
||||
{
|
||||
"D800H", 0xd8000
|
||||
},
|
||||
{
|
||||
"DC00H", 0xdc000
|
||||
},
|
||||
{
|
||||
""
|
||||
}
|
||||
@@ -1450,12 +1456,21 @@ static const device_config_t aha_154xcf_config[] = {
|
||||
{
|
||||
"C800H", 0xc8000
|
||||
},
|
||||
{
|
||||
"CC00H", 0xcc000
|
||||
},
|
||||
{
|
||||
"D000H", 0xd0000
|
||||
},
|
||||
{
|
||||
"D400H", 0xd4000
|
||||
},
|
||||
{
|
||||
"D800H", 0xd8000
|
||||
},
|
||||
{
|
||||
"DC00H", 0xdc000
|
||||
},
|
||||
{
|
||||
""
|
||||
}
|
||||
|
||||
@@ -9,9 +9,11 @@
|
||||
#include <86box/dma.h>
|
||||
#include <86box/pic.h>
|
||||
#include <86box/device.h>
|
||||
#include <86box/gameport.h>
|
||||
#include <86box/nvr.h>
|
||||
#include <86box/sound.h>
|
||||
#include <86box/filters.h>
|
||||
#include <86box/midi.h>
|
||||
#include <86box/snd_opl.h>
|
||||
#include <86box/snd_ym7128.h>
|
||||
|
||||
@@ -38,6 +40,10 @@ typedef struct adgold_t
|
||||
int adgold_mma_intpos[2];
|
||||
|
||||
pc_timer_t adgold_mma_timer_count;
|
||||
|
||||
uint8_t adgold_midi_ctrl, midi_queue[16];
|
||||
int midi_r, midi_w;
|
||||
int uart_in, uart_out, sysex;
|
||||
|
||||
struct
|
||||
{
|
||||
@@ -54,6 +60,7 @@ typedef struct adgold_t
|
||||
|
||||
int fm_vol_l, fm_vol_r;
|
||||
int samp_vol_l, samp_vol_r;
|
||||
int aux_vol_l, aux_vol_r;
|
||||
int vol_l, vol_r;
|
||||
int treble, bass;
|
||||
|
||||
@@ -61,7 +68,9 @@ typedef struct adgold_t
|
||||
int16_t mma_buffer[2][SOUNDBUFLEN];
|
||||
|
||||
int pos;
|
||||
|
||||
|
||||
int gameport_enabled;
|
||||
|
||||
int surround_enabled;
|
||||
} adgold_t;
|
||||
|
||||
@@ -134,12 +143,17 @@ void adgold_update_irq_status(adgold_t *adgold)
|
||||
uint8_t temp = 0xf;
|
||||
|
||||
if (!(adgold->adgold_mma_regs[0][8] & 0x10) && (adgold->adgold_mma_status & 0x10)) /*Timer 0*/
|
||||
temp &= ~2;
|
||||
temp &= ~2;
|
||||
if (!(adgold->adgold_mma_regs[0][8] & 0x20) && (adgold->adgold_mma_status & 0x20)) /*Timer 1*/
|
||||
temp &= ~2;
|
||||
temp &= ~2;
|
||||
if (!(adgold->adgold_mma_regs[0][8] & 0x40) && (adgold->adgold_mma_status & 0x40)) /*Timer 2*/
|
||||
temp &= ~2;
|
||||
|
||||
temp &= ~2;
|
||||
if (!(adgold->adgold_mma_regs[0][0xd] & 0x01) && (adgold->adgold_mma_status & 0x04))
|
||||
temp &= ~2;
|
||||
if (!(adgold->adgold_mma_regs[0][0xd] & 0x04) && (adgold->adgold_mma_status & 0x08))
|
||||
temp &= ~2;
|
||||
if (!(adgold->adgold_mma_regs[0][0xd] & 0x10) && (adgold->adgold_mma_status & 0x80))
|
||||
temp &= ~2;
|
||||
if ((adgold->adgold_mma_status & 0x01) && !(adgold->adgold_mma_regs[0][0xc] & 2))
|
||||
temp &= ~2;
|
||||
if ((adgold->adgold_mma_status & 0x02) && !(adgold->adgold_mma_regs[1][0xc] & 2))
|
||||
@@ -249,11 +263,19 @@ void adgold_write(uint16_t addr, uint8_t val, void *p)
|
||||
adgold->adgold_38x_regs[0x0c] = val;
|
||||
adgold->samp_vol_r = (int)(int8_t)(val - 128);
|
||||
break;
|
||||
case 0x0d: /*Aux volume left*/
|
||||
adgold->adgold_38x_regs[0x0d] = val;
|
||||
adgold->aux_vol_l = (int)(int8_t)(val - 128);
|
||||
break;
|
||||
case 0x0e: /*Aux volume right*/
|
||||
adgold->adgold_38x_regs[0x0e] = val;
|
||||
adgold->aux_vol_r = (int)(int8_t)(val - 128);
|
||||
break;
|
||||
|
||||
case 0x18: /*Surround*/
|
||||
adgold->adgold_38x_regs[0x18] = val;
|
||||
ym7128_write(&adgold->ym7128, val);
|
||||
break;
|
||||
break;
|
||||
|
||||
default:
|
||||
adgold->adgold_38x_regs[adgold->adgold_38x_addr] = val;
|
||||
@@ -380,6 +402,45 @@ void adgold_write(uint16_t addr, uint8_t val, void *p)
|
||||
case 0xc:
|
||||
adgold->adgold_mma_intpos[0] = (7 - ((val >> 2) & 7)) * 8;
|
||||
break;
|
||||
|
||||
case 0xd:
|
||||
adgold->adgold_midi_ctrl = val & 0x3f;
|
||||
|
||||
if ((adgold->adgold_midi_ctrl & 0x0f) != 0x0f) {
|
||||
if ((adgold->adgold_midi_ctrl & 0x0f) == 0x00) {
|
||||
adgold->uart_out = 0;
|
||||
adgold->uart_in = 0;
|
||||
adgold->midi_w = 0;
|
||||
adgold->midi_r = 0;
|
||||
adgold->adgold_mma_status &= ~0x8c;
|
||||
} else {
|
||||
if (adgold->adgold_midi_ctrl & 0x01)
|
||||
adgold->uart_in = 1;
|
||||
if (adgold->adgold_midi_ctrl & 0x04)
|
||||
adgold->uart_out = 1;
|
||||
if (adgold->adgold_midi_ctrl & 0x02) {
|
||||
adgold->uart_in = 0;
|
||||
adgold->midi_w = 0;
|
||||
adgold->midi_r = 0;
|
||||
}
|
||||
if (adgold->adgold_midi_ctrl & 0x08)
|
||||
adgold->uart_out = 0;
|
||||
adgold->adgold_mma_status &= ~0x80;
|
||||
}
|
||||
} else
|
||||
adgold->adgold_mma_status &= ~0x8c;
|
||||
|
||||
adgold_update_irq_status(adgold);
|
||||
break;
|
||||
|
||||
case 0xe:
|
||||
if (adgold->uart_out) {
|
||||
midi_raw_out_byte(val);
|
||||
|
||||
adgold->adgold_mma_status &= ~0x08;
|
||||
adgold_update_irq_status(adgold);
|
||||
}
|
||||
break;
|
||||
}
|
||||
adgold->adgold_mma_regs[0][adgold->adgold_mma_addr] = val;
|
||||
break;
|
||||
@@ -467,9 +528,9 @@ uint8_t adgold_read(uint16_t addr, void *p)
|
||||
{
|
||||
case 0x00: /*Control/ID*/
|
||||
if (adgold->surround_enabled)
|
||||
temp = 0x50; /*16-bit ISA, surround module, no telephone/CDROM*/
|
||||
temp = 0x51; /*8-bit ISA, surround module, no telephone/CD-ROM*/
|
||||
else
|
||||
temp = 0x70; /*16-bit ISA, no telephone/surround/CD-ROM*/
|
||||
temp = 0x71; /*8-bit ISA, no telephone/surround/CD-ROM*/
|
||||
break;
|
||||
|
||||
default:
|
||||
@@ -482,7 +543,7 @@ uint8_t adgold_read(uint16_t addr, void *p)
|
||||
|
||||
case 4: case 6:
|
||||
temp = adgold->adgold_mma_status;
|
||||
adgold->adgold_mma_status = 0; /*JUKEGOLD expects timer status flags to auto-clear*/
|
||||
adgold->adgold_mma_status &= ~0xf3; /*JUKEGOLD expects timer status flags to auto-clear*/
|
||||
adgold_update_irq_status(adgold);
|
||||
break;
|
||||
case 5:
|
||||
@@ -491,12 +552,26 @@ uint8_t adgold_read(uint16_t addr, void *p)
|
||||
{
|
||||
case 6: /*Timer 2 low*/
|
||||
adgold->adgold_mma.timer2_read = adgold->adgold_mma.timer2_count;
|
||||
adgold->adgold_mma_status |= 0x40;
|
||||
temp = adgold->adgold_mma.timer2_read & 0xff;
|
||||
break;
|
||||
case 7: /*Timer 2 high*/
|
||||
temp = adgold->adgold_mma.timer2_read >> 8;
|
||||
break;
|
||||
|
||||
case 0xe:
|
||||
temp = 0;
|
||||
if (adgold->uart_in) {
|
||||
temp = adgold->midi_queue[adgold->midi_r];
|
||||
if (adgold->midi_r != adgold->midi_w) {
|
||||
adgold->midi_r++;
|
||||
adgold->midi_r &= 0x0f;
|
||||
}
|
||||
adgold->adgold_mma_status &= ~0x04;
|
||||
adgold_update_irq_status(adgold);
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
temp = adgold->adgold_mma_regs[0][adgold->adgold_mma_addr];
|
||||
break;
|
||||
@@ -579,6 +654,17 @@ void adgold_timer_poll(void *p)
|
||||
adgold_t *adgold = (adgold_t *)p;
|
||||
|
||||
timer_advance_u64(&adgold->adgold_mma_timer_count, (uint64_t)((double)TIMER_USEC * 1.88964));
|
||||
|
||||
if (adgold->adgold_midi_ctrl & 0x3f) {
|
||||
if ((adgold->adgold_midi_ctrl & 0x3f) != 0x3f) {
|
||||
if (adgold->uart_out)
|
||||
adgold->adgold_mma_status |= 0x08;
|
||||
if (adgold->adgold_midi_ctrl & 0x10)
|
||||
adgold->adgold_mma_status |= 0x80;
|
||||
}
|
||||
adgold_update_irq_status(adgold);
|
||||
}
|
||||
|
||||
if (adgold->adgold_mma_regs[0][8] & 0x01) /*Timer 0*/
|
||||
{
|
||||
adgold->adgold_mma.timer0_count--;
|
||||
@@ -752,6 +838,59 @@ static void adgold_get_buffer(int32_t *buffer, int len, void *p)
|
||||
free(adgold_buffer);
|
||||
}
|
||||
|
||||
static void
|
||||
adgold_filter_cd_audio(int channel, double *buffer, void *p)
|
||||
{
|
||||
adgold_t *adgold = (adgold_t *)p;
|
||||
double c;
|
||||
int aux = channel ? adgold->aux_vol_r : adgold->aux_vol_l;
|
||||
int vol = channel ? adgold->vol_r : adgold->vol_l;
|
||||
|
||||
c = ((((*buffer) * aux) / 4096.0) * vol) / 4096.0;
|
||||
*buffer = c;
|
||||
}
|
||||
|
||||
|
||||
static void adgold_input_msg(void *p, uint8_t *msg, uint32_t len)
|
||||
{
|
||||
adgold_t *adgold = (adgold_t *)p;
|
||||
uint8_t i;
|
||||
|
||||
if (adgold->sysex)
|
||||
return;
|
||||
|
||||
if (adgold->uart_in) {
|
||||
adgold->adgold_mma_status |= 0x04;
|
||||
|
||||
for (i=0; i < len; i++) {
|
||||
adgold->midi_queue[adgold->midi_w++] = msg[i];
|
||||
adgold->midi_w &= 0x0f;
|
||||
}
|
||||
|
||||
adgold_update_irq_status(adgold);
|
||||
}
|
||||
}
|
||||
|
||||
static int adgold_input_sysex(void *p, uint8_t *buffer, uint32_t len, int abort)
|
||||
{
|
||||
adgold_t *adgold = (adgold_t *)p;
|
||||
uint32_t i;
|
||||
|
||||
if (abort) {
|
||||
adgold->sysex = 0;
|
||||
return 0;
|
||||
}
|
||||
adgold->sysex = 1;
|
||||
for (i=0;i<len;i++) {
|
||||
if (adgold->midi_r == adgold->midi_w)
|
||||
return (len-i);
|
||||
adgold->midi_queue[adgold->midi_w++] = buffer[i];
|
||||
adgold->midi_w &= 0x0f;
|
||||
}
|
||||
adgold->sysex = 0;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
void *adgold_init(const device_t *info)
|
||||
{
|
||||
@@ -762,6 +901,8 @@ void *adgold_init(const device_t *info)
|
||||
memset(adgold, 0, sizeof(adgold_t));
|
||||
|
||||
adgold->surround_enabled = device_get_config_int("surround");
|
||||
|
||||
adgold->gameport_enabled = device_get_config_int("gameport");
|
||||
|
||||
opl3_init(&adgold->opl);
|
||||
if (adgold->surround_enabled)
|
||||
@@ -798,6 +939,8 @@ void *adgold_init(const device_t *info)
|
||||
adgold->fm_vol_r = (int)(int8_t)(adgold->adgold_eeprom[0x0a] - 128);
|
||||
adgold->samp_vol_l = (int)(int8_t)(adgold->adgold_eeprom[0x0b] - 128);
|
||||
adgold->samp_vol_r = (int)(int8_t)(adgold->adgold_eeprom[0x0c] - 128);
|
||||
adgold->aux_vol_l = (int)(int8_t)(adgold->adgold_eeprom[0x0d] - 128);
|
||||
adgold->aux_vol_r = (int)(int8_t)(adgold->adgold_eeprom[0x0e] - 128);
|
||||
|
||||
adgold->adgold_mma_enable[0] = 0;
|
||||
adgold->adgold_mma_fifo_start[0] = adgold->adgold_mma_fifo_end[0] = 0;
|
||||
@@ -805,10 +948,17 @@ void *adgold_init(const device_t *info)
|
||||
/*388/389 are handled by adlib_init*/
|
||||
io_sethandler(0x0388, 0x0008, adgold_read, NULL, NULL, adgold_write, NULL, NULL, adgold);
|
||||
|
||||
if (adgold->gameport_enabled)
|
||||
gameport_remap(gameport_add(&gameport_201_device), 0x201);
|
||||
|
||||
timer_add(&adgold->adgold_mma_timer_count, adgold_timer_poll, adgold, 1);
|
||||
|
||||
sound_add_handler(adgold_get_buffer, adgold);
|
||||
sound_set_cd_audio_filter(adgold_filter_cd_audio, adgold);
|
||||
|
||||
if (device_get_config_int("receive_input"))
|
||||
midi_in_handler(1, adgold_input_msg, adgold_input_sysex, adgold);
|
||||
|
||||
return adgold;
|
||||
}
|
||||
|
||||
@@ -829,9 +979,15 @@ void adgold_close(void *p)
|
||||
|
||||
static const device_config_t adgold_config[] =
|
||||
{
|
||||
{
|
||||
"gameport", "Enable Game port", CONFIG_BINARY, "", 1
|
||||
},
|
||||
{
|
||||
"surround", "Surround module", CONFIG_BINARY, "", 1
|
||||
},
|
||||
{
|
||||
"receive_input", "Receive input (MIDI)", CONFIG_BINARY, "", 1
|
||||
},
|
||||
{
|
||||
"", "", -1
|
||||
}
|
||||
|
||||
@@ -67,9 +67,10 @@ typedef struct {
|
||||
uint32_t sr_cir;
|
||||
uint16_t sr_ram[128];
|
||||
|
||||
uint8_t uart_ctrl, uart_status,
|
||||
uart_res;
|
||||
uint32_t uart_fifo;
|
||||
uint8_t uart_data, uart_ctrl,
|
||||
uart_status, uart_res;
|
||||
uint32_t uart_fifo[8];
|
||||
uint8_t read_fifo_pos, write_fifo_pos;
|
||||
|
||||
ac97_codec_t * codec;
|
||||
uint32_t codec_ctrl;
|
||||
@@ -165,6 +166,8 @@ typedef struct {
|
||||
#define UART_STATUS_TXRDY (1<<1)
|
||||
#define UART_STATUS_RXRDY (1<<0)
|
||||
|
||||
#define UART_FIFO_BYTE_VALID 0x00000100
|
||||
|
||||
#define FORMAT_MONO_8 0
|
||||
#define FORMAT_STEREO_8 1
|
||||
#define FORMAT_MONO_16 2
|
||||
@@ -174,7 +177,6 @@ typedef struct {
|
||||
static void es1371_fetch(es1371_t *dev, int dac_nr);
|
||||
static void update_legacy(es1371_t *dev, uint32_t old_legacy_ctrl);
|
||||
|
||||
|
||||
#ifdef ENABLE_AUDIOPCI_LOG
|
||||
int audiopci_do_log = ENABLE_AUDIOPCI_LOG;
|
||||
|
||||
@@ -205,10 +207,12 @@ es1371_update_irqs(es1371_t *dev)
|
||||
if ((dev->int_status & INT_STATUS_DAC2) && (dev->si_cr & SI_P2_INTR_EN))
|
||||
irq = 1;
|
||||
|
||||
/* MIDI input is unsupported for now */
|
||||
if ((dev->int_status & INT_STATUS_UART) && (dev->uart_status & UART_STATUS_TXINT) &&
|
||||
((dev->uart_ctrl & UART_CTRL_TXINTEN) != 0x20))
|
||||
dev->int_status &= ~INT_STATUS_UART;
|
||||
|
||||
if ((dev->uart_status & UART_STATUS_TXINT) || (dev->uart_status & UART_STATUS_RXINT)) {
|
||||
dev->int_status |= INT_STATUS_UART;
|
||||
irq = 1;
|
||||
}
|
||||
|
||||
if (irq)
|
||||
dev->int_status |= INT_STATUS_INTR;
|
||||
@@ -225,10 +229,96 @@ es1371_update_irqs(es1371_t *dev)
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
es1371_update_tx_irq(es1371_t *dev)
|
||||
{
|
||||
dev->uart_status &= ~UART_STATUS_TXINT;
|
||||
|
||||
if (((dev->uart_ctrl & UART_CTRL_TXINTEN) == 0x20) && (dev->uart_status & UART_STATUS_TXRDY))
|
||||
dev->uart_status |= UART_STATUS_TXINT;
|
||||
|
||||
es1371_update_irqs(dev);
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
es1371_set_tx_irq(es1371_t *dev, int set)
|
||||
{
|
||||
dev->uart_status &= ~UART_STATUS_TXRDY;
|
||||
|
||||
if (set)
|
||||
dev->uart_status |= UART_STATUS_TXRDY;
|
||||
|
||||
es1371_update_tx_irq(dev);
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
es1371_update_rx_irq(es1371_t *dev)
|
||||
{
|
||||
dev->uart_status &= ~UART_STATUS_RXINT;
|
||||
|
||||
if ((dev->uart_ctrl & UART_CTRL_RXINTEN) && (dev->uart_status & UART_STATUS_RXRDY))
|
||||
dev->uart_status |= UART_STATUS_RXINT;
|
||||
|
||||
es1371_update_irqs(dev);
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
es1371_set_rx_irq(es1371_t *dev, int set)
|
||||
{
|
||||
dev->uart_status &= ~UART_STATUS_RXRDY;
|
||||
|
||||
if (set)
|
||||
dev->uart_status |= UART_STATUS_RXRDY;
|
||||
|
||||
es1371_update_rx_irq(dev);
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
es1371_scan_fifo(es1371_t *dev)
|
||||
{
|
||||
if (dev->read_fifo_pos != dev->write_fifo_pos) {
|
||||
dev->uart_data = dev->uart_fifo[dev->read_fifo_pos];
|
||||
dev->read_fifo_pos = (dev->read_fifo_pos + 1) & 7;
|
||||
|
||||
es1371_set_rx_irq(dev, 1);
|
||||
} else
|
||||
es1371_set_rx_irq(dev, 0);
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
es1371_write_fifo(es1371_t *dev, uint8_t val)
|
||||
{
|
||||
if (dev->write_fifo_pos < 8) {
|
||||
dev->uart_fifo[dev->write_fifo_pos] = val | UART_FIFO_BYTE_VALID;
|
||||
dev->write_fifo_pos = (dev->write_fifo_pos + 1) & 7;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
es1371_reset_fifo(es1371_t *dev)
|
||||
{
|
||||
int i;
|
||||
|
||||
for (i = 0; i < 8; i++)
|
||||
dev->uart_fifo[i] = 0x00000000;
|
||||
|
||||
dev->read_fifo_pos = dev->write_fifo_pos = 0;
|
||||
|
||||
es1371_set_rx_irq(dev, 0);
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
es1371_reset(void *p)
|
||||
{
|
||||
es1371_t *dev = (es1371_t *) p;
|
||||
int i;
|
||||
|
||||
nmi = 0;
|
||||
|
||||
@@ -316,7 +406,14 @@ es1371_reset(void *p)
|
||||
|
||||
/* UART FIFO Register, Address 30H, 34H, 38H, 3CH, Memory Page 1110b, 1111b
|
||||
Addressable as longword only */
|
||||
dev->uart_fifo = 0xfffffe00;
|
||||
for (i = 0; i < 8; i++)
|
||||
dev->uart_fifo[i] = 0xffff0000;
|
||||
|
||||
/* Reset the UART TX. */
|
||||
es1371_set_tx_irq(dev, 0);
|
||||
|
||||
/* Reset the UART (RX) FIFO. */
|
||||
es1371_reset_fifo(dev);
|
||||
|
||||
/* Update interrupts to ensure they're all correctly cleared. */
|
||||
es1371_update_irqs(dev);
|
||||
@@ -344,7 +441,10 @@ es1371_read_frame_reg(es1371_t *dev, int frame, int page)
|
||||
/* UART FIFO Register, Address 30H, 34H, 38H, 3CH, Memory Page 1110b, 1111b
|
||||
Addressable as longword only */
|
||||
case 0xe: case 0xf:
|
||||
ret = dev->uart_fifo;
|
||||
audiopci_log("[30:%02X] ret = dev->uart_fifo[%02X] = %08X\n", page,
|
||||
((page & 0x01) << 2) + ((frame >> 2) & 0x03),
|
||||
dev->uart_fifo[((page & 0x01) << 2) + ((frame >> 2) & 0x03)]);
|
||||
ret = dev->uart_fifo[((page & 0x01) << 2) + ((frame >> 2) & 0x03)];
|
||||
break;
|
||||
}
|
||||
break;
|
||||
@@ -363,7 +463,10 @@ es1371_read_frame_reg(es1371_t *dev, int frame, int page)
|
||||
/* UART FIFO Register, Address 30H, 34H, 38H, 3CH, Memory Page 1110b, 1111b
|
||||
Addressable as longword only */
|
||||
case 0xe: case 0xf:
|
||||
ret = dev->uart_fifo;
|
||||
audiopci_log("[34:%02X] ret = dev->uart_fifo[%02X] = %08X\n", page,
|
||||
((page & 0x01) << 2) + ((frame >> 2) & 0x03),
|
||||
dev->uart_fifo[((page & 0x01) << 2) + ((frame >> 2) & 0x03)]);
|
||||
ret = dev->uart_fifo[((page & 0x01) << 2) + ((frame >> 2) & 0x03)];
|
||||
break;
|
||||
}
|
||||
break;
|
||||
@@ -377,7 +480,10 @@ es1371_read_frame_reg(es1371_t *dev, int frame, int page)
|
||||
/* UART FIFO Register, Address 30H, 34H, 38H, 3CH, Memory Page 1110b, 1111b
|
||||
Addressable as longword only */
|
||||
case 0xe: case 0xf:
|
||||
ret = dev->uart_fifo;
|
||||
audiopci_log("[38:%02X] ret = dev->uart_fifo[%02X] = %08X\n", page,
|
||||
((page & 0x01) << 2) + ((frame >> 2) & 0x03),
|
||||
dev->uart_fifo[((page & 0x01) << 2) + ((frame >> 2) & 0x03)]);
|
||||
ret = dev->uart_fifo[((page & 0x01) << 2) + ((frame >> 2) & 0x03)];
|
||||
break;
|
||||
}
|
||||
break;
|
||||
@@ -391,12 +497,19 @@ es1371_read_frame_reg(es1371_t *dev, int frame, int page)
|
||||
/* UART FIFO Register, Address 30H, 34H, 38H, 3CH, Memory Page 1110b, 1111b
|
||||
Addressable as longword only */
|
||||
case 0xe: case 0xf:
|
||||
ret = dev->uart_fifo;
|
||||
audiopci_log("[3C:%02X] ret = dev->uart_fifo[%02X] = %08X\n", page,
|
||||
((page & 0x01) << 2) + ((frame >> 2) & 0x03),
|
||||
dev->uart_fifo[((page & 0x01) << 2) + ((frame >> 2) & 0x03)]);
|
||||
ret = dev->uart_fifo[((page & 0x01) << 2) + ((frame >> 2) & 0x03)];
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
if (page == 0x0e || page == 0x0f) {
|
||||
audiopci_log("Read frame = %02x, page = %02x, uart fifo valid = %02x, temp = %03x\n", frame, page, dev->valid, ret);
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
@@ -420,7 +533,9 @@ es1371_write_frame_reg(es1371_t *dev, int frame, int page, uint32_t val)
|
||||
/* UART FIFO Register, Address 30H, 34H, 38H, 3CH, Memory Page 1110b, 1111b
|
||||
Addressable as longword only */
|
||||
case 0xe: case 0xf:
|
||||
dev->uart_fifo = (dev->uart_fifo & 0xfffffe00) | (val & 0x000001ff);
|
||||
audiopci_log("[30:%02X] dev->uart_fifo[%02X] = %08X\n", page,
|
||||
((page & 0x01) << 2) + ((frame >> 2) & 0x03), val);
|
||||
dev->uart_fifo[((page & 0x01) << 2) + ((frame >> 2) & 0x03)] = val;
|
||||
break;
|
||||
}
|
||||
break;
|
||||
@@ -441,7 +556,9 @@ es1371_write_frame_reg(es1371_t *dev, int frame, int page, uint32_t val)
|
||||
/* UART FIFO Register, Address 30H, 34H, 38H, 3CH, Memory Page 1110b, 1111b
|
||||
Addressable as longword only */
|
||||
case 0xe: case 0xf:
|
||||
dev->uart_fifo = (dev->uart_fifo & 0xfffffe00) | (val & 0x000001ff);
|
||||
audiopci_log("[34:%02X] dev->uart_fifo[%02X] = %08X\n", page,
|
||||
((page & 0x01) << 2) + ((frame >> 2) & 0x03), val);
|
||||
dev->uart_fifo[((page & 0x01) << 2) + ((frame >> 2) & 0x03)] = val;
|
||||
break;
|
||||
}
|
||||
break;
|
||||
@@ -455,7 +572,9 @@ es1371_write_frame_reg(es1371_t *dev, int frame, int page, uint32_t val)
|
||||
/* UART FIFO Register, Address 30H, 34H, 38H, 3CH, Memory Page 1110b, 1111b
|
||||
Addressable as longword only */
|
||||
case 0xe: case 0xf:
|
||||
dev->uart_fifo = (dev->uart_fifo & 0xfffffe00) | (val & 0x000001ff);
|
||||
audiopci_log("[38:%02X] dev->uart_fifo[%02X] = %08X\n", page,
|
||||
((page & 0x01) << 2) + ((frame >> 2) & 0x03), val);
|
||||
dev->uart_fifo[((page & 0x01) << 2) + ((frame >> 2) & 0x03)] = val;
|
||||
break;
|
||||
}
|
||||
break;
|
||||
@@ -470,11 +589,17 @@ es1371_write_frame_reg(es1371_t *dev, int frame, int page, uint32_t val)
|
||||
/* UART FIFO Register, Address 30H, 34H, 38H, 3CH, Memory Page 1110b, 1111b
|
||||
Addressable as longword only */
|
||||
case 0xe: case 0xf:
|
||||
dev->uart_fifo = (dev->uart_fifo & 0xfffffe00) | (val & 0x000001ff);
|
||||
audiopci_log("[3C:%02X] dev->uart_fifo[%02X] = %08X\n", page,
|
||||
((page & 0x01) << 2) + ((frame >> 2) & 0x03), val);
|
||||
dev->uart_fifo[((page & 0x01) << 2) + ((frame >> 2) & 0x03)] = val;
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
if (page == 0x0e || page == 0x0f) {
|
||||
audiopci_log("Write frame = %02x, page = %02x, uart fifo = %08x, val = %02x\n", frame, page, dev->uart_fifo, val);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -505,21 +630,27 @@ es1371_inb(uint16_t port, void *p)
|
||||
must be for a reason */
|
||||
case 0x04:
|
||||
ret = dev->int_status & 0xff;
|
||||
audiopci_log("[R] STATUS 0- 7 = %02X\n", ret);
|
||||
break;
|
||||
case 0x05:
|
||||
ret = (dev->int_status >> 8) & 0xff;
|
||||
audiopci_log("[R] STATUS 8-15 = %02X\n", ret);
|
||||
break;
|
||||
case 0x06:
|
||||
ret = (dev->int_status >> 16) & 0x0f;
|
||||
audiopci_log("[R] STATUS 16-23 = %02X\n", ret);
|
||||
break;
|
||||
case 0x07:
|
||||
ret = ((dev->int_status >> 24) & 0x03) | 0xfc;
|
||||
audiopci_log("[R] STATUS 24-31 = %02X\n", ret);
|
||||
break;
|
||||
|
||||
/* UART Data Register, Address 08H
|
||||
Addressable as byte only */
|
||||
case 0x08:
|
||||
ret = 0x00;
|
||||
ret = dev->uart_data;
|
||||
es1371_set_rx_irq(dev, 0);
|
||||
audiopci_log("[R] UART DATA = %02X\n", ret);
|
||||
break;
|
||||
|
||||
/* UART Status Register, Address 09H
|
||||
@@ -533,6 +664,7 @@ es1371_inb(uint16_t port, void *p)
|
||||
Addressable as byte only */
|
||||
case 0x0a:
|
||||
ret = dev->uart_res & 0x01;
|
||||
audiopci_log("[R] UART RES = %02X\n", ret);
|
||||
break;
|
||||
|
||||
/* Memory Page Register, Address 0CH
|
||||
@@ -661,6 +793,8 @@ es1371_inw(uint16_t port, void *p)
|
||||
break;
|
||||
}
|
||||
|
||||
audiopci_log("es1371_inw: port=%04x ret=%04x\n", port, ret);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
@@ -682,6 +816,7 @@ es1371_inl(uint16_t port, void *p)
|
||||
Addressable as longword only */
|
||||
case 0x04:
|
||||
ret = dev->int_status;
|
||||
audiopci_log("[R] STATUS = %08X\n", ret);
|
||||
break;
|
||||
|
||||
/* Memory Page Register, Address 0CH
|
||||
@@ -783,22 +918,36 @@ es1371_outb(uint16_t port, uint8_t val, void *p)
|
||||
/* UART Data Register, Address 08H
|
||||
Addressable as byte only */
|
||||
case 0x08:
|
||||
audiopci_log("MIDI data = %02x\n", val);
|
||||
/* TX does not use FIFO. */
|
||||
midi_raw_out_byte(val);
|
||||
es1371_set_tx_irq(dev, 1);
|
||||
break;
|
||||
|
||||
/* UART Control Register, Address 09H
|
||||
Addressable as byte only */
|
||||
case 0x09:
|
||||
audiopci_log("[W] UART CTRL = %02X\n", val);
|
||||
dev->uart_ctrl = val & 0xe3;
|
||||
if ((dev->uart_ctrl & UART_CTRL_TXINTEN) != 0x20)
|
||||
dev->int_status &= ~INT_STATUS_UART;
|
||||
es1371_update_irqs(dev);
|
||||
audiopci_log("ES1371 UART Cntrl = %02x\n", dev->uart_ctrl);
|
||||
|
||||
if ((val & 0x03) == 0x03) {
|
||||
/* Reset TX */
|
||||
es1371_set_tx_irq(dev, 1);
|
||||
|
||||
/* Software reset */
|
||||
es1371_reset_fifo(dev);
|
||||
} else {
|
||||
es1371_set_tx_irq(dev, 1);
|
||||
|
||||
es1371_update_tx_irq(dev);
|
||||
es1371_update_rx_irq(dev);
|
||||
}
|
||||
break;
|
||||
|
||||
/* UART Reserved Register, Address 0AH
|
||||
Addressable as byte only */
|
||||
case 0x0a:
|
||||
audiopci_log("[W] UART RES = %02X\n", val);
|
||||
dev->uart_res = val & 0x01;
|
||||
break;
|
||||
|
||||
@@ -965,6 +1114,7 @@ es1371_outl(uint16_t port, uint32_t val, void *p)
|
||||
/* Interrupt/Chip Select Status Register, Address 04H
|
||||
Addressable as longword only */
|
||||
case 0x04:
|
||||
audiopci_log("[W] STATUS = %08X\n", val);
|
||||
break;
|
||||
|
||||
/* Memory Page Register, Address 0CH
|
||||
@@ -1704,29 +1854,10 @@ es1371_poll(void *p)
|
||||
|
||||
timer_advance_u64(&dev->dac[1].timer, dev->dac[1].latch);
|
||||
|
||||
es1371_scan_fifo(dev);
|
||||
|
||||
es1371_update(dev);
|
||||
|
||||
if (dev->int_ctrl & INT_UART_EN) {
|
||||
//audiopci_log("UART INT Enabled\n");
|
||||
if (dev->uart_ctrl & UART_CTRL_RXINTEN) {
|
||||
/* We currently don't implement MIDI Input.
|
||||
But if anything sets MIDI Input and Output together we'd have to take account
|
||||
of the MIDI Output case, and disable IRQ's and RX bits when MIDI Input is
|
||||
enabled as well but not in the MIDI Output portion */
|
||||
dev->int_status &= ~INT_STATUS_UART;
|
||||
dev->uart_status |= (UART_STATUS_TXINT | UART_STATUS_TXRDY);
|
||||
} else if (!(dev->uart_ctrl & UART_CTRL_RXINTEN) && ((dev->uart_ctrl & UART_CTRL_TXINTEN))) {
|
||||
/* Or enable the UART IRQ and the respective TX bits only when the MIDI Output is
|
||||
enabled */
|
||||
dev->int_status |= INT_STATUS_UART;
|
||||
} else {
|
||||
dev->uart_status |= (UART_STATUS_TXINT | UART_STATUS_TXRDY);
|
||||
}
|
||||
|
||||
//audiopci_log("UART control = %02x\n", dev->uart_ctrl & (UART_CTRL_RXINTEN | UART_CTRL_TXINTEN));
|
||||
es1371_update_irqs(dev);
|
||||
}
|
||||
|
||||
if (dev->int_ctrl & INT_DAC1_EN) {
|
||||
frac = dev->dac[0].ac & 0x7fff;
|
||||
idx = dev->dac[0].ac >> 15;
|
||||
@@ -1846,12 +1977,51 @@ generate_es1371_filter(void)
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
es1371_input_msg(void *p, uint8_t *msg, uint32_t len)
|
||||
{
|
||||
es1371_t *dev = (es1371_t *)p;
|
||||
uint8_t i;
|
||||
|
||||
for (i = 0; i < len; i++)
|
||||
es1371_write_fifo(dev, msg[i]);
|
||||
}
|
||||
|
||||
|
||||
static int
|
||||
es1371_input_sysex(void *p, uint8_t *buffer, uint32_t len, int abort)
|
||||
{
|
||||
es1371_t *dev = (es1371_t *)p;
|
||||
uint32_t i = -1;
|
||||
|
||||
audiopci_log("Abort = %i\n", abort);
|
||||
|
||||
if (dev->uart_status & UART_STATUS_RXRDY)
|
||||
abort = 1;
|
||||
|
||||
if (!abort) {
|
||||
for (i = 0; i < len; i++) {
|
||||
es1371_write_fifo(dev, buffer[i]);
|
||||
if (dev->uart_status & UART_STATUS_RXRDY)
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/* The last sent position is in i. Return 7 - i. */
|
||||
|
||||
return 7 - i;
|
||||
}
|
||||
|
||||
|
||||
static void *
|
||||
es1371_init(const device_t *info)
|
||||
{
|
||||
es1371_t *dev = malloc(sizeof(es1371_t));
|
||||
memset(dev, 0x00, sizeof(es1371_t));
|
||||
|
||||
if (device_get_config_int("receive_input"))
|
||||
midi_in_handler(1, es1371_input_msg, es1371_input_sysex, dev);
|
||||
|
||||
sound_add_handler(es1371_get_buffer, dev);
|
||||
sound_set_cd_audio_filter(es1371_filter_cd_audio, dev);
|
||||
|
||||
@@ -1920,7 +2090,11 @@ static const device_config_t es1371_config[] =
|
||||
}
|
||||
},
|
||||
.default_int = AC97_CODEC_CS4297A
|
||||
}, {
|
||||
},
|
||||
{
|
||||
"receive_input", "Receive input (MIDI)", CONFIG_BINARY, "", 1
|
||||
},
|
||||
{
|
||||
"", "", -1
|
||||
}
|
||||
};
|
||||
|
||||
@@ -17,6 +17,7 @@
|
||||
#include <86box/filters.h>
|
||||
#include <86box/snd_mpu401.h>
|
||||
#include <86box/snd_opl.h>
|
||||
#include <86box/snd_sb.h>
|
||||
#include <86box/snd_sb_dsp.h>
|
||||
|
||||
|
||||
@@ -413,7 +414,7 @@ static void pas16_pit_out(uint16_t port, uint8_t val, void *p)
|
||||
{
|
||||
if (!(val & 0x20))
|
||||
{
|
||||
if (val & 2) pas16->pit.rl[0] = timer_get_remaining_u64(&pit.timer[0]) / PITCONST;;
|
||||
if (val & 2) pas16->pit.rl[0] = timer_get_remaining_u64(&pas16->pit.timer[0]) / PITCONST;;
|
||||
if (val & 4) pas16->pit.rl[1] = pas16->pit.c[1];
|
||||
if (val & 8) pas16->pit.rl[2] = pas16->pit.c[2];
|
||||
}
|
||||
@@ -429,7 +430,7 @@ static void pas16_pit_out(uint16_t port, uint8_t val, void *p)
|
||||
if (!(pas16->pit.ctrl & 0x30))
|
||||
{
|
||||
if (!t)
|
||||
pas16->pit.rl[t] = timer_get_remaining_u64(&pit.timer[t]) / PITCONST;
|
||||
pas16->pit.rl[t] = timer_get_remaining_u64(&pas16->pit.timer[t]) / PITCONST;
|
||||
else
|
||||
{
|
||||
pas16->pit.rl[t] = pas16->pit.c[t];
|
||||
@@ -450,7 +451,7 @@ static void pas16_pit_out(uint16_t port, uint8_t val, void *p)
|
||||
{
|
||||
pas16->pit.rm[t] = 3;
|
||||
if (!t)
|
||||
pas16->pit.rl[t] = timer_get_remaining_u64(&pit.timer[t]) / PITCONST;
|
||||
pas16->pit.rl[t] = timer_get_remaining_u64(&pas16->pit.timer[t]) / PITCONST;
|
||||
else
|
||||
pas16->pit.rl[t] = pas16->pit.c[t];
|
||||
}
|
||||
@@ -519,8 +520,8 @@ static uint8_t pas16_pit_in(uint16_t port, void *p)
|
||||
pas16->pit.rereadlatch[t] = 0;
|
||||
if (!t)
|
||||
{
|
||||
pas16->pit.rl[t] = timer_get_remaining_u64(&pit.timer[t]) / PITCONST;
|
||||
if ((timer_get_remaining_u64(&pit.timer[t]) / PITCONST) > 65536)
|
||||
pas16->pit.rl[t] = timer_get_remaining_u64(&pas16->pit.timer[t]) / PITCONST;
|
||||
if ((timer_get_remaining_u64(&pas16->pit.timer[t]) / PITCONST) > 65536)
|
||||
pas16->pit.rl[t] = 0xFFFF;
|
||||
}
|
||||
else
|
||||
|
||||
@@ -379,6 +379,7 @@ END
|
||||
#include "languages/it-IT.rc"
|
||||
#include "languages/ja-JP.rc"
|
||||
#include "languages/ko-KR.rc"
|
||||
#include "languages/pl-PL.rc"
|
||||
#include "languages/pt-BR.rc"
|
||||
#include "languages/pt-PT.rc"
|
||||
#include "languages/ru-RU.rc"
|
||||
|
||||
@@ -69,6 +69,12 @@ ifeq ($(DEV_BUILD), y)
|
||||
ifndef XL24
|
||||
XL24 := y
|
||||
endif
|
||||
ifndef ISAMEM_RAMPAGE
|
||||
ISAMEM_RAMPAGE := y
|
||||
endif
|
||||
ifndef ISAMEM_IAB
|
||||
ISAMEM_IAB := y
|
||||
endif
|
||||
ifndef OLIVETTI
|
||||
OLIVETTI := y
|
||||
endif
|
||||
@@ -118,6 +124,12 @@ else
|
||||
ifndef XL24
|
||||
XL24 := n
|
||||
endif
|
||||
ifndef ISAMEM_RAMPAGE
|
||||
ISAMEM_RAMPAGE := n
|
||||
endif
|
||||
ifndef ISAMEM_IAB
|
||||
ISAMEM_IAB := n
|
||||
endif
|
||||
ifndef OLIVETTI
|
||||
OLIVETTI := n
|
||||
endif
|
||||
@@ -450,6 +462,14 @@ ifeq ($(XL24), y)
|
||||
OPTS += -DUSE_XL24
|
||||
endif
|
||||
|
||||
ifeq ($(ISAMEM_RAMPAGE), y)
|
||||
OPTS += -DUSE_ISAMEM_RAMPAGE
|
||||
endif
|
||||
|
||||
ifeq ($(ISAMEM_IAB), y)
|
||||
OPTS += -DUSE_ISAMEM_IAB
|
||||
endif
|
||||
|
||||
ifeq ($(OLIVETTI), y)
|
||||
OPTS += -DUSE_OLIVETTI
|
||||
DEVBROBJ += olivetti_eva.o
|
||||
|
||||
647
src/win/languages/pl-PL.rc
Normal file
647
src/win/languages/pl-PL.rc
Normal file
@@ -0,0 +1,647 @@
|
||||
////////////////////////////////////////////////////////////////////////////
|
||||
// Polish (pl-PL) resources
|
||||
|
||||
#ifdef _WIN32
|
||||
LANGUAGE LANG_POLISH, SUBLANG_DEFAULT
|
||||
#pragma code_page(65001)
|
||||
#endif //_WIN32
|
||||
|
||||
#define AUTHORS
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Menu
|
||||
//
|
||||
|
||||
MainMenu MENU DISCARDABLE
|
||||
BEGIN
|
||||
POPUP "&Akcje"
|
||||
BEGIN
|
||||
MENUITEM "&Klawaitura wymaga przechwytu myszy", IDM_ACTION_KBD_REQ_CAPTURE
|
||||
MENUITEM "&Prawy CTRL to lewy Alt", IDM_ACTION_RCTRL_IS_LALT
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Twardy reset...", IDM_ACTION_HRESET
|
||||
MENUITEM "&Ctrl+Alt+Del\tCtrl+F12", IDM_ACTION_RESET_CAD
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Ctrl+Alt+&Esc", IDM_ACTION_CTRL_ALT_ESC
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Pauza", IDM_ACTION_PAUSE
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "W&yjdź...", IDM_ACTION_EXIT
|
||||
END
|
||||
POPUP "&Widok"
|
||||
BEGIN
|
||||
MENUITEM "&Ukryj pasek statusu", IDM_VID_HIDE_STATUS_BAR
|
||||
MENUITEM "Ukryj &pasek narzędzi", IDM_VID_HIDE_TOOLBAR
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Okno o zmiennym rozmiarze", IDM_VID_RESIZE
|
||||
MENUITEM "P&amiętaj rozmiar &i pozycję", IDM_VID_REMEMBER
|
||||
MENUITEM SEPARATOR
|
||||
POPUP "Re&nderer"
|
||||
BEGIN
|
||||
MENUITEM "&SDL (Software)", IDM_VID_SDL_SW
|
||||
MENUITEM "SDL (&Hardware)", IDM_VID_SDL_HW
|
||||
MENUITEM "SDL (&OpenGL)", IDM_VID_SDL_OPENGL
|
||||
MENUITEM "Open&GL (3.0 Core)", IDM_VID_OPENGL_CORE
|
||||
#ifdef USE_VNC
|
||||
MENUITEM "&VNC", IDM_VID_VNC
|
||||
#endif
|
||||
END
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Określ rozmiary...", IDM_VID_SPECIFY_DIM
|
||||
MENUITEM "&Wymuś proporcje wyświetlania 4:3", IDM_VID_FORCE43
|
||||
POPUP "&Czynnik skalowania okna"
|
||||
BEGIN
|
||||
MENUITEM "&0.5x", IDM_VID_SCALE_1X
|
||||
MENUITEM "&1x", IDM_VID_SCALE_2X
|
||||
MENUITEM "1.&5x", IDM_VID_SCALE_3X
|
||||
MENUITEM "&2x", IDM_VID_SCALE_4X
|
||||
END
|
||||
POPUP "Metoda filtrowania"
|
||||
BEGIN
|
||||
MENUITEM "&Nearest", IDM_VID_FILTER_NEAREST
|
||||
MENUITEM "&Linear", IDM_VID_FILTER_LINEAR
|
||||
END
|
||||
MENUITEM "Skalowanie Hi&DPI", IDM_VID_HIDPI
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Pełny ekran\tCtrl+Alt+PageUP", IDM_VID_FULLSCREEN
|
||||
POPUP "Fullscreen &stretch mode"
|
||||
BEGIN
|
||||
MENUITEM "&Tryb rozciągania na pełnym ekranie", IDM_VID_FS_FULL
|
||||
MENUITEM "&4:3", IDM_VID_FS_43
|
||||
MENUITEM "&Kwadratowe piksele (Zachowaj proporcje)", IDM_VID_FS_KEEPRATIO
|
||||
MENUITEM "&Skalowanie całkowite", IDM_VID_FS_INT
|
||||
END
|
||||
POPUP "Ustawienia E&GA/(S)VGA"
|
||||
BEGIN
|
||||
MENUITEM "&Odwrócony monitor VGA", IDM_VID_INVERT
|
||||
POPUP "Rodzaj ekranu &VGA"
|
||||
BEGIN
|
||||
MENUITEM "RGB - &Kolorowy", IDM_VID_GRAY_RGB
|
||||
MENUITEM "&RGB - Skala szarości", IDM_VID_GRAY_MONO
|
||||
MENUITEM "&Bursztynowy monitor", IDM_VID_GRAY_AMBER
|
||||
MENUITEM "&Zielony monitor", IDM_VID_GRAY_GREEN
|
||||
MENUITEM "&Biały monitor", IDM_VID_GRAY_WHITE
|
||||
END
|
||||
POPUP "Typ konwersji &w skali szarości"
|
||||
BEGIN
|
||||
MENUITEM "BT&601 (NTSC/PAL)", IDM_VID_GRAYCT_601
|
||||
MENUITEM "BT&709 (HDTV)", IDM_VID_GRAYCT_709
|
||||
MENUITEM "&Średni", IDM_VID_GRAYCT_AVE
|
||||
END
|
||||
END
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Overscan dla CGA/PCjr/Tandy/E&GA/(S)VGA", IDM_VID_OVERSCAN
|
||||
MENUITEM "Zmień kontrast dla &monochromatycznego ekranu", IDM_VID_CGACON
|
||||
END
|
||||
MENUITEM "&Nośnik", IDM_MEDIA
|
||||
POPUP "&Narzędzia"
|
||||
BEGIN
|
||||
MENUITEM "&Ustawienia...", IDM_CONFIG
|
||||
MENUITEM "&Aktualizuj ikony na pasku statusu", IDM_UPDATE_ICONS
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Zrób &zrzut ekranu\tCtrl+F11", IDM_ACTION_SCREENSHOT
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Preferencje...", IDM_PREFERENCES
|
||||
MENUITEM "Włącz integrację z &Discord", IDM_DISCORD
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Wzmocnienie &dźwięku...", IDM_SND_GAIN
|
||||
#ifdef MTR_ENABLED
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Rozpocznij śledzenie\tCtrl+T", IDM_ACTION_BEGIN_TRACE
|
||||
MENUITEM "Zakończ śledzenie\tCtrl+T", IDM_ACTION_END_TRACE
|
||||
#endif
|
||||
END
|
||||
#if defined(ENABLE_LOG_TOGGLES) || defined(ENABLE_LOG_COMMANDS)
|
||||
POPUP "&Logowanie"
|
||||
BEGIN
|
||||
# ifdef ENABLE_BUSLOGIC_LOG
|
||||
MENUITEM "Włącz logu BusLogic\tCtrl+F4", IDM_LOG_BUSLOGIC
|
||||
# endif
|
||||
# ifdef ENABLE_CDROM_LOG
|
||||
MENUITEM "Włącz logi CD-ROM\tCtrl+F5", IDM_LOG_CDROM
|
||||
# endif
|
||||
# ifdef ENABLE_D86F_LOG
|
||||
MENUITEM "Włącz logi dyskietek (86F)\tCtrl+F6", IDM_LOG_D86F
|
||||
# endif
|
||||
# ifdef ENABLE_FDC_LOG
|
||||
MENUITEM "Włącz logi kontrolera dyskietek\tCtrl+F7", IDM_LOG_FDC
|
||||
# endif
|
||||
# ifdef ENABLE_IDE_LOG
|
||||
MENUITEM "Włącz logi IDE\tCtrl+F8", IDM_LOG_IDE
|
||||
# endif
|
||||
# ifdef ENABLE_SERIAL_LOG
|
||||
MENUITEM "Włącz logi portu szeregowego\tCtrl+F3", IDM_LOG_SERIAL
|
||||
# endif
|
||||
# ifdef ENABLE_NIC_LOG
|
||||
MENUITEM "Włącz logi sieci\tCtrl+F9", IDM_LOG_NIC
|
||||
# endif
|
||||
# ifdef ENABLE_LOG_COMMANDS
|
||||
# ifdef ENABLE_LOG_TOGGLES
|
||||
MENUITEM SEPARATOR
|
||||
# endif
|
||||
# ifdef ENABLE_LOG_BREAKPOINT
|
||||
MENUITEM "&Punkt przerwania dziennika\tCtrl+F10", IDM_LOG_BREAKPOINT
|
||||
# endif
|
||||
# ifdef ENABLE_VRAM_DUMP
|
||||
MENUITEM "Zrzuć pamięć &wideo\tCtrl+F1", IDM_DUMP_VRAM
|
||||
# endif
|
||||
# endif
|
||||
END
|
||||
#endif
|
||||
POPUP "&Pomoc"
|
||||
BEGIN
|
||||
MENUITEM "&Dokumentacja...", IDM_DOCS
|
||||
MENUITEM "&O 86Box...", IDM_ABOUT
|
||||
END
|
||||
END
|
||||
|
||||
StatusBarMenu MENU DISCARDABLE
|
||||
BEGIN
|
||||
MENUITEM SEPARATOR
|
||||
END
|
||||
|
||||
CassetteSubmenu MENU DISCARDABLE
|
||||
BEGIN
|
||||
POPUP ""
|
||||
BEGIN
|
||||
MENUITEM "&Nowy obraz...", IDM_CASSETTE_IMAGE_NEW
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Istniejący obraz...", IDM_CASSETTE_IMAGE_EXISTING
|
||||
MENUITEM "Istniejący obraz (&Chroniony przed zapisem)...", IDM_CASSETTE_IMAGE_EXISTING_WP
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Nagraj", IDM_CASSETTE_RECORD
|
||||
MENUITEM "&Odtwórz", IDM_CASSETTE_PLAY
|
||||
MENUITEM "&Przewiń do początku", IDM_CASSETTE_REWIND
|
||||
MENUITEM "&Przewiń do końca", IDM_CASSETTE_FAST_FORWARD
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "W&yjmij", IDM_CASSETTE_EJECT
|
||||
END
|
||||
END
|
||||
|
||||
CartridgeSubmenu MENU DISCARDABLE
|
||||
BEGIN
|
||||
POPUP ""
|
||||
BEGIN
|
||||
MENUITEM "&Obraz...", IDM_CARTRIDGE_IMAGE
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "W&yjmij", IDM_CARTRIDGE_EJECT
|
||||
END
|
||||
END
|
||||
|
||||
FloppySubmenu MENU DISCARDABLE
|
||||
BEGIN
|
||||
POPUP ""
|
||||
BEGIN
|
||||
MENUITEM "&Nowy obraz...", IDM_FLOPPY_IMAGE_NEW
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Istniejący obraz...", IDM_FLOPPY_IMAGE_EXISTING
|
||||
MENUITEM "Istniejący obraz (&Chroniony przed zapisem)...", IDM_FLOPPY_IMAGE_EXISTING_WP
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "E&ksportuj do 86F...", IDM_FLOPPY_EXPORT_TO_86F
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "W&yjmij", IDM_FLOPPY_EJECT
|
||||
END
|
||||
END
|
||||
|
||||
CdromSubmenu MENU DISCARDABLE
|
||||
BEGIN
|
||||
POPUP ""
|
||||
BEGIN
|
||||
MENUITEM "&Ścisz", IDM_CDROM_MUTE
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "P&usty", IDM_CDROM_EMPTY
|
||||
MENUITEM "&Przeładuj poprzedni obraz", IDM_CDROM_RELOAD
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Obraz", IDM_CDROM_IMAGE
|
||||
END
|
||||
END
|
||||
|
||||
ZIPSubmenu MENU DISCARDABLE
|
||||
BEGIN
|
||||
POPUP ""
|
||||
BEGIN
|
||||
MENUITEM "&Nowy obraz...", IDM_ZIP_IMAGE_NEW
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Istniejący obraz...", IDM_ZIP_IMAGE_EXISTING
|
||||
MENUITEM "Istniejący obraz (&Chroniony przed zapisem)...", IDM_ZIP_IMAGE_EXISTING_WP
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "W&yjmij", IDM_ZIP_EJECT
|
||||
MENUITEM "&Przeładuj poprzedni obraz", IDM_ZIP_RELOAD
|
||||
END
|
||||
END
|
||||
|
||||
MOSubmenu MENU DISCARDABLE
|
||||
BEGIN
|
||||
POPUP ""
|
||||
BEGIN
|
||||
MENUITEM "&Nowy obraz...", IDM_MO_IMAGE_NEW
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Istniejący obraz...", IDM_MO_IMAGE_EXISTING
|
||||
MENUITEM "Istniejący obraz (&Chroniony przed zapisem)...", IDM_MO_IMAGE_EXISTING_WP
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "W&yjmij", IDM_MO_EJECT
|
||||
MENUITEM "&Przeładuj poprzedni obraz", IDM_MO_RELOAD
|
||||
END
|
||||
END
|
||||
|
||||
VidGLSubMenu MENU DISCARDABLE
|
||||
BEGIN
|
||||
POPUP "Docelowa &liczba klatek na sekundę"
|
||||
BEGIN
|
||||
MENUITEM "&Zsynchronizuj z wideo", IDM_VID_GL_FPS_BLITTER
|
||||
MENUITEM "&25 fps", IDM_VID_GL_FPS_25
|
||||
MENUITEM "&30 fps", IDM_VID_GL_FPS_30
|
||||
MENUITEM "&50 fps", IDM_VID_GL_FPS_50
|
||||
MENUITEM "&60 fps", IDM_VID_GL_FPS_60
|
||||
MENUITEM "&75 fps", IDM_VID_GL_FPS_75
|
||||
END
|
||||
MENUITEM "&VSync", IDM_VID_GL_VSYNC
|
||||
MENUITEM "&Wybierz shader...", IDM_VID_GL_SHADER
|
||||
MENUITEM "&Usuń shader", IDM_VID_GL_NOSHADER
|
||||
END
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Dialog
|
||||
//
|
||||
|
||||
#define STR_PREFERENCES "Preferencje"
|
||||
#define STR_SND_GAIN "Wzmocnienie dźwięku"
|
||||
#define STR_NEW_FLOPPY "Nowy obraz"
|
||||
#define STR_CONFIG "Ustawienia"
|
||||
#define STR_SPECIFY_DIM "Określ rozmiary okna"
|
||||
|
||||
#define STR_OK "OK"
|
||||
#define STR_CANCEL "Anuluj"
|
||||
#define STR_GLOBAL "Zapisz ustawienia jako &globalne ustawienia domyślne"
|
||||
#define STR_DEFAULT "&Domyślny"
|
||||
#define STR_LANGUAGE "Język:"
|
||||
#define STR_ICONSET "Zestaw ikon:"
|
||||
|
||||
#define STR_GAIN "Wzmacniacz"
|
||||
|
||||
#define STR_FILE_NAME "Nazwa pliku:"
|
||||
#define STR_DISK_SIZE "Rozmiar dysku:"
|
||||
#define STR_RPM_MODE "Tryb RPM:"
|
||||
#define STR_PROGRESS "Postęp:"
|
||||
|
||||
#define STR_WIDTH "Szerokość:"
|
||||
#define STR_HEIGHT "Wysokość:"
|
||||
#define STR_LOCK_TO_SIZE "Stały rozmiar"
|
||||
|
||||
#define STR_MACHINE_TYPE "Rodzaj maszyny:"
|
||||
#define STR_MACHINE "Maszyna:"
|
||||
#define STR_CONFIGURE "Konfiguruj"
|
||||
#define STR_CPU_TYPE "Rodzaj procesora:"
|
||||
#define STR_SPEED "Szybkość:"
|
||||
#define STR_FPU "Jednostka FPU:"
|
||||
#define STR_WAIT_STATES "Stany oczekiwania:"
|
||||
#define STR_MB "MB"
|
||||
#define STR_MEMORY "Pamięć:"
|
||||
#define STR_TIME_SYNC "Synchronizacja czasu"
|
||||
#define STR_DISABLED "Wyłączona"
|
||||
#define STR_ENABLED_LOCAL "Włączona (czas lokalny)"
|
||||
#define STR_ENABLED_UTC "Włączona (UTC)"
|
||||
#define STR_DYNAREC "Dynamiczny rekompilator"
|
||||
|
||||
#define STR_VIDEO "Wideo:"
|
||||
#define STR_VOODOO "Grafika Voodoo"
|
||||
|
||||
#define STR_MOUSE "Mysz:"
|
||||
#define STR_JOYSTICK "Joystick:"
|
||||
#define STR_JOY1 "Joystick 1..."
|
||||
#define STR_JOY2 "Joystick 2..."
|
||||
#define STR_JOY3 "Joystick 3..."
|
||||
#define STR_JOY4 "Joystick 4..."
|
||||
|
||||
#define STR_SOUND "Karta dźwiękowa:"
|
||||
#define STR_MIDI "Urządzenie wyjściowe MIDI:"
|
||||
#define STR_MIDI_IN "Urządzenie wejściowe MIDI:"
|
||||
#define STR_MPU401 "Samodzielne urządzenie MPU-401"
|
||||
#define STR_SSI "Innovation SSI-2001"
|
||||
#define STR_CMS "CMS / Game Blaster"
|
||||
#define STR_GUS "Gravis Ultrasound"
|
||||
#define STR_FLOAT "Użyj dźwięku FLOAT32"
|
||||
|
||||
#define STR_NET_TYPE "Rodzaj sieci:"
|
||||
#define STR_PCAP "Urządzenie PCap:"
|
||||
#define STR_NET "Karta sieciowa:"
|
||||
|
||||
#define STR_LPT1 "Urządzenie LPT1:"
|
||||
#define STR_LPT2 "Urządzenie LPT2:"
|
||||
#define STR_LPT3 "Urządzenie LPT3:"
|
||||
#define STR_SERIAL1 "Port szeregowy 1"
|
||||
#define STR_SERIAL2 "Port szeregowy 2"
|
||||
#define STR_SERIAL3 "Port szeregowy 3"
|
||||
#define STR_SERIAL4 "Port Szeregowy 4"
|
||||
#define STR_PARALLEL1 "Port równoległy 1"
|
||||
#define STR_PARALLEL2 "Port równoległy 2"
|
||||
#define STR_PARALLEL3 "Port równoległy 3"
|
||||
|
||||
#define STR_HDC "Kontroler dysku twardego:"
|
||||
#define STR_FDC "Kontroler dyskietek:"
|
||||
#define STR_IDE_TER "Trzeciorzędowy kontroler IDE"
|
||||
#define STR_IDE_QUA "Czwartorzędowy kontroler IDE"
|
||||
#define STR_SCSI "SCSI"
|
||||
#define STR_SCSI_1 "Kontroler 1:"
|
||||
#define STR_SCSI_2 "Kontroler 2:"
|
||||
#define STR_SCSI_3 "Kontroler 3:"
|
||||
#define STR_SCSI_4 "Kontroler 4:"
|
||||
#define STR_CASSETTE "Kaseta"
|
||||
|
||||
#define STR_HDD "Dyski twarde:"
|
||||
#define STR_NEW "&Nowy..."
|
||||
#define STR_EXISTING "&Istniejący..."
|
||||
#define STR_REMOVE "&Usuń"
|
||||
#define STR_BUS "Magistrala:"
|
||||
#define STR_CHANNEL "Kanał:"
|
||||
#define STR_ID "ID:"
|
||||
|
||||
#define STR_SPECIFY "&Określ..."
|
||||
#define STR_SECTORS "Sektory:"
|
||||
#define STR_HEADS "Głowice:"
|
||||
#define STR_CYLS "Cylindry:"
|
||||
#define STR_SIZE_MB "Rozmiar (MB):"
|
||||
#define STR_TYPE "Rodzaj:"
|
||||
#define STR_IMG_FORMAT "Format obrazu:"
|
||||
#define STR_BLOCK_SIZE "Rozmiar bloku:"
|
||||
|
||||
#define STR_FLOPPY_DRIVES "Napędy dyskietek:"
|
||||
#define STR_TURBO "Rozrządy Turbo"
|
||||
#define STR_CHECKBPB "Sprawdzaj BPB"
|
||||
#define STR_CDROM_DRIVES "Napędy CD-ROM:"
|
||||
|
||||
#define STR_MO_DRIVES "Napędy MO:"
|
||||
#define STR_ZIP_DRIVES "Napędy ZIP:"
|
||||
#define STR_250 "ZIP 250"
|
||||
|
||||
#define STR_ISARTC "ISA RTC:"
|
||||
#define STR_ISAMEM "Rozszerzenie pamięci ISA"
|
||||
#define STR_ISAMEM_1 "Karta 1:"
|
||||
#define STR_ISAMEM_2 "Karta 2:"
|
||||
#define STR_ISAMEM_3 "Karta 3:"
|
||||
#define STR_ISAMEM_4 "Karta 4:"
|
||||
#define STR_BUGGER "Urządzenie ISABugger"
|
||||
#define STR_POSTCARD "Karta POST"
|
||||
|
||||
#define FONT_SIZE 9
|
||||
#define FONT_NAME "Segoe UI"
|
||||
|
||||
#include "dialogs.rc"
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// String Table
|
||||
//
|
||||
|
||||
STRINGTABLE DISCARDABLE
|
||||
BEGIN
|
||||
2048 "86Box"
|
||||
IDS_2049 "Błąd"
|
||||
IDS_2050 "Fatalny błąd"
|
||||
IDS_2051 "<reserved>"
|
||||
IDS_2052 "Naciśnij klawisze CTRL+ALT+PAGE DOWN aby wrócić to trybu okna."
|
||||
IDS_2053 "Szybkość"
|
||||
IDS_2054 "ZIP %03i %i (%s): %ls"
|
||||
IDS_2055 "Obrazy ZIP (*.IM?;*.ZDI)\0*.IM?;*.ZDI\0"
|
||||
IDS_2056 "86Box nie może znaleźć obrazów ROM nadających się do użytku.\n\nProszę pobrać zestaw obrazów ROM ze strony <a href=""https://github.com/86Box/roms/releases/latest"">download</a>, i rozpakować je do katalogu ""roms""."
|
||||
IDS_2057 "(pusty)"
|
||||
IDS_2058 "Obrazy ZIP (*.IM?;*.ZDI)\0*.IM?;*.ZDI\0Wszystkie pliki (*.*)\0*.*\0"
|
||||
IDS_2059 "Turbo"
|
||||
IDS_2060 "Włącz"
|
||||
IDS_2061 "Wyłącz"
|
||||
IDS_2062 "Wszystkie obrazy (*.86F;*.DSK;*.FLP;*.IM?;*.*FD?)\0*.86F;*.DSK;*.FLP;*.IM?;*.*FD?\0Podstawowe obrazy sektorów(*.DSK;*.FLP;*.IM?;*.*FD?)\0*.DSK;*.FLP;*.IM?;*.IMG;*.*FD?\0Obrazy powierzchniowe (*.86F)\0*.86F\0"
|
||||
IDS_2063 "Maszyna ""%hs"" nie jest dostępna, ponieważ brakuje obrazów ROM w katalogu roms/machines. Przełączanie na dostępną maszynę."
|
||||
END
|
||||
|
||||
STRINGTABLE DISCARDABLE
|
||||
BEGIN
|
||||
IDS_2064 "Karta wideo ""%hs"" nie jest dostępna, ponieważ brakuje obrazów ROM w katalogu roms/video. Przełączanie na dostępną kartę wideo."
|
||||
IDS_2065 "Maszyna"
|
||||
IDS_2066 "Ekran"
|
||||
IDS_2067 "Urządzenia wejściowe"
|
||||
IDS_2068 "Dźwięk"
|
||||
IDS_2069 "Sieć"
|
||||
IDS_2070 "Porty (COM & LPT)"
|
||||
IDS_2071 "Kontrolery pamięci"
|
||||
IDS_2072 "Dyski twarde"
|
||||
IDS_2073 "Napędy dyskietek i CD-ROM"
|
||||
IDS_2074 "Inne urządzenia wymienne"
|
||||
IDS_2075 "Inne urządzenia peryferyjne"
|
||||
IDS_2076 "Obrazy powierzchniowe (*.86F)\0*.86F\0"
|
||||
IDS_2077 "Kliknij w celu przechwycenia myszy"
|
||||
IDS_2078 "Naciśnij klawisze F8+F12 w celu uwolnienia myszy"
|
||||
IDS_2079 "Naciśnij klawisze F8+F12 lub środkowy przycisk w celu uwolnienia myszy"
|
||||
END
|
||||
|
||||
STRINGTABLE DISCARDABLE
|
||||
BEGIN
|
||||
IDS_2080 "Nie można zainicjować FluidSynth"
|
||||
IDS_2081 "Magistrala"
|
||||
IDS_2082 "Plik"
|
||||
IDS_2083 "C"
|
||||
IDS_2084 "H"
|
||||
IDS_2085 "S"
|
||||
IDS_2086 "MB"
|
||||
IDS_2087 "Sprawdzaj BPB"
|
||||
IDS_2088 "KB"
|
||||
IDS_2089 "Nie można zainicjować renderera wideo."
|
||||
IDS_2090 "Domyślny"
|
||||
IDS_2091 "%i Stany oczekiwania"
|
||||
IDS_2092 "Rodzaj"
|
||||
IDS_2093 "Nie udało się ustawić PCap"
|
||||
IDS_2094 "Nie znaleziono urządzeń PCap"
|
||||
IDS_2095 "Nieprawidłowe urządzenie PCap"
|
||||
IDS_2096 "Standardowe joysticki 2-przyciskowe"
|
||||
IDS_2097 "Standardowy joystick 4-przyciskowy"
|
||||
IDS_2098 "Standardowy joystick 6-przyciskowy"
|
||||
IDS_2099 "Standardowy joystick 8-przyciskowy"
|
||||
IDS_2100 "CH Flightstick Pro"
|
||||
IDS_2101 "Microsoft SideWinder Pad"
|
||||
IDS_2102 "Thrustmaster Flight Control System"
|
||||
IDS_2103 "Żaden"
|
||||
IDS_2104 "Nie można załadować akceleratorów klawiaturowych."
|
||||
IDS_2105 "Nie można zarejestrować surowych danych wejściowych."
|
||||
IDS_2106 "%u"
|
||||
IDS_2107 "%u MB (CHS: %i, %i, %i)"
|
||||
IDS_2108 "Dyskietka %i (%s): %ls"
|
||||
IDS_2109 "Wszystkie obrazy (*.0??;*.1??;*.??0;*.86F;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.JSON;*.TD0;*.*FD?;*.MFM;*.XDF)\0*.0??;*.1??;*.??0;*.86F;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.JSON;*.TD0;*.*FD?;*.MFM;*.XDF\0Zaawansowane obrazy sektorów (*.IMD;*.JSON;*.TD0)\0*.IMD;*.JSON;*.TD0\0Podstawowe obrazy sektorów (*.0??;*.1??;*.??0;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.XDF;*.*FD?)\0*.0??;*.1??;*.??0;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.XDF;*.*FD?\0Flux images (*.FDI)\0*.FDI\0Obrazy powierzchniowe (*.86F;*.MFM)\0*.86F;*.MFM\0All files (*.*)\0*.*\0"
|
||||
IDS_2110 "Nie można zainicjować FreeType"
|
||||
IDS_2111 "Nie można zainicjować SDL, wymagany SDL2.dll"
|
||||
IDS_2112 "Jesteś pewien że chcesz wykonać twardy reset emulowanej maszyny?"
|
||||
IDS_2113 "Jesteś pewien że chcesz zakończyć 86Box?"
|
||||
IDS_2114 "Nie można zainicjować Ghostscript"
|
||||
IDS_2115 "MO %i (%ls): %ls"
|
||||
IDS_2116 "Obrazy MO (*.IM?;*.MDI)\0*.IM?;*.MDI\0All files (*.*)\0*.*\0"
|
||||
IDS_2117 "Witamy w 86Box!"
|
||||
IDS_2118 "Kontroler wewnętrzny"
|
||||
IDS_2119 "Zakończ"
|
||||
IDS_2120 "Nie znaleziono obrazów ROM"
|
||||
IDS_2121 "Czy chcesz zapisać ustawienia?"
|
||||
IDS_2122 "To spowoduje twardy reset wirtualnej maszyny."
|
||||
IDS_2123 "Zapisz"
|
||||
IDS_2124 "O 86Box"
|
||||
IDS_2125 "86Box v" EMU_VERSION
|
||||
|
||||
IDS_2126 "Emulator starych komputerów\n\nAutorzy: Sarah Walker, Miran Grca, Fred N. van Kempen (waltje), SA1988, Tiseno100, reenigne, leilei, JohnElliott, greatpsycho, i inni.\n\nPrzetłumaczony przez: Fanta-Shokata\n\nWydany na licencji GNU General Public License w wersji 2 lub nowszej. Zobacz LICENSE aby uzyskać więcej informacji."
|
||||
IDS_2127 "OK"
|
||||
IDS_2128 "Sprzęt niedostępny"
|
||||
#ifdef _WIN32
|
||||
#define LIB_NAME_PCAP "WinPcap"
|
||||
#else
|
||||
#define LIB_NAME_PCAP "libpcap"
|
||||
#endif
|
||||
IDS_2129 "Sprawdź, czy " LIB_NAME_PCAP " jest zainstalowany i czy posiadasz połączenie sieciowe kompatybilne z " LIB_NAME_PCAP "."
|
||||
IDS_2130 "Nieprawidłowa konfiguracja"
|
||||
#ifdef _WIN32
|
||||
#define LIB_NAME_FREETYPE "freetype.dll"
|
||||
#else
|
||||
#define LIB_NAME_FREETYPE "libfreetype"
|
||||
#endif
|
||||
IDS_2131 LIB_NAME_FREETYPE " jest wymagany do emulacji drukarki ESC-P."
|
||||
#ifdef _WIN32
|
||||
#define LIB_NAME_GS "gsdll32.dll"
|
||||
#else
|
||||
#define LIB_NAME_GS "libgs"
|
||||
#endif
|
||||
IDS_2132 LIB_NAME_GS " jest wymagany do automatycznej konwersji plików PostScript do PDF.\n\nDokumenty wysłane do ogólnej drukarki PostScript zostaną zapisane jako pliki PostScript (.ps)."
|
||||
#ifdef _WIN32
|
||||
#define LIB_NAME_FLUIDSYNTH "libfluidsynth.dll"
|
||||
#else
|
||||
#define LIB_NAME_FLUIDSYNTH "libfluidsynth"
|
||||
#endif
|
||||
IDS_2133 LIB_NAME_FLUIDSYNTH " jest wymagany dla wyjścia FluidSynth MIDI."
|
||||
IDS_2134 "Przechodzenie do trybu pełnoekranowego"
|
||||
IDS_2135 "Nie pokazuj więcej tego komunikatu"
|
||||
IDS_2136 "Nie kończ"
|
||||
IDS_2137 "Przywróć"
|
||||
IDS_2138 "Nie przywracaj"
|
||||
IDS_2139 "Obrazy MO (*.IM?;*.MDI)\0*.IM?;*.MDI\0All files (*.*)\0*.*\0"
|
||||
IDS_2140 "Obrazy CD-ROM (*.ISO;*.CUE)\0*.ISO;*.CUE\0All files (*.*)\0*.*\0"
|
||||
IDS_2141 "Konfiguracja urządzenia %hs"
|
||||
IDS_2142 "Monitor w trybie czuwania"
|
||||
IDS_2143 "Shadery OpenGL (*.GLSL)\0*.GLSL\0Wszystkie pliki (*.*)\0*.*\0"
|
||||
IDS_2144 "Opcje OpenGL"
|
||||
IDS_2145 "Ładujesz nieobsługiwaną konfigurację"
|
||||
IDS_2146 "Wybór rodzaju procesora oparty na wybranej maszynie jest wyłączony dla tej emulowanej maszyny.\n\nPozwala to na wybór procesora który jest niekompatybilny z wybraną maszyną. Jednak możesz napotkać niezgodności z BIOS-em maszyny lub innym oprogramowaniem.\n\nAktywacja tego ustawienia nie jest wspierana i każde zgłoszenie błędu może zostać zamknięte jako nieważne."
|
||||
IDS_2147 "Kontynuuj"
|
||||
IDS_2148 "Kaseta: %s"
|
||||
IDS_2149 "Obrazy kaset (*.PCM;*.RAW;*.WAV;*.CAS)\0*.PCM;*.RAW;*.WAV;*.CAS\0Wszystkie pliki (*.*)\0*.*\0"
|
||||
IDS_2150 "Kartrydż %i: %ls"
|
||||
IDS_2151 "Obrazy kartrydżu (*.A;*.B;*.JRC)\0*.A;*.B;*.JRC\0Wszystkie pliki (*.*)\0*.*\0"
|
||||
IDS_2152 "Błąd inicjalizacji renderera"
|
||||
IDS_2153 "Nie można zainicjować renderera OpenGL (3.0 Core). Użyj innego."
|
||||
IDS_2154 "Wznów wykonywanie"
|
||||
IDS_2155 "Zatrzymaj wykonywanie"
|
||||
IDS_2156 "Naciśnij Ctrl+Alt+Del"
|
||||
IDS_2157 "Naciśnij Ctrl+Alt+Esc"
|
||||
IDS_2158 "Twardy reset"
|
||||
IDS_2159 "Wyłączenie ACPI"
|
||||
IDS_2160 "Ustawienia"
|
||||
END
|
||||
|
||||
STRINGTABLE DISCARDABLE
|
||||
BEGIN
|
||||
IDS_4096 "Dysk twardy (%s)"
|
||||
IDS_4097 "%01i:%01i"
|
||||
IDS_4098 "%01i"
|
||||
IDS_4099 "Napędy CD-ROM MFM/RLL lub ESDI nigdy nie istniały"
|
||||
IDS_4100 "Niestandardowy..."
|
||||
IDS_4101 "Niestandardowy (duży)..."
|
||||
IDS_4102 "Dodaj nowy dysk twardy"
|
||||
IDS_4103 "Dodaj istniejący dysk twardy"
|
||||
IDS_4104 "Obrazy dysków HDI nie mogą być większe niż 4 GB."
|
||||
IDS_4105 "Obrazy dysków nie mogą być większe niż 127 GB."
|
||||
IDS_4106 "Obrazy dysku twardego (*.HD?;*.IM?;*.VHD)\0*.HD?;*.IM?;*.VHD\0Wszystkie pliki (*.*)\0*.*\0"
|
||||
IDS_4107 "Nie można odczytać pliku"
|
||||
IDS_4108 "Nie można zapisać pliku"
|
||||
IDS_4109 "Obrazy HDI lub HDX z rozmiarem sektora innym niż 512 nie są wspierane."
|
||||
IDS_4110 "USB nie jest jeszcze wspierane"
|
||||
IDS_4111 "Plik obrazu dysku już istnieje"
|
||||
IDS_4112 "Określ prawidłową nazwę pliku."
|
||||
IDS_4113 "Utworzono obraz dysku"
|
||||
IDS_4114 "Sprawdź, czy plik istnieje i nadaje się do odczytu."
|
||||
IDS_4115 "Sprawdź, czy plik jest zapiyswany w katalogu z możliwością zapisu."
|
||||
IDS_4116 "Obraz dysku jest za duży"
|
||||
IDS_4117 "Nie zapomnij o partycjonowaniu u sformatowaniu nowo utworzego dysku"
|
||||
IDS_4118 "Wybrany plik zostanie nadpisany. Czy na pewno chcesz użyć tego pliku?"
|
||||
IDS_4119 "Niewspierany obraz dysku"
|
||||
IDS_4120 "Nadpisz"
|
||||
IDS_4121 "Nie nadpisuj"
|
||||
IDS_4122 "Obraz surowy (.img)"
|
||||
IDS_4123 "Obraz HDI (.hdi)"
|
||||
IDS_4124 "Obraz HDX (.hdx)"
|
||||
IDS_4125 "VHD o stałym rozmiarze (.vhd)"
|
||||
IDS_4126 "VHD o dynamicznym rozmiarze (.vhd)"
|
||||
IDS_4127 "VHD różnicujący (.vhd)"
|
||||
IDS_4128 "Duże bloki (2 MB)"
|
||||
IDS_4129 "Małe bloki (512 KB)"
|
||||
IDS_4130 "Pliki VHD (*.VHD)\0*.VHD\0Wszystkie pliki (*.*)\0*.*\0"
|
||||
IDS_4131 "Wybierz nadrzędny plik VHD"
|
||||
IDS_4132 "Może to oznaczać, że obraz nadrzędny został zmodyfikowany po utworzeniu obrazu różnicującego.\n\nMoże się to również zdarzyć, jeśli pliki obrazów przeniesione lub skopiowane, lub wystąpił błąd w programie, który utworzył ten dysk\n\nCzy chcesz naprawić sygnatury czasowe?"
|
||||
IDS_4133 "Sygnatury czasowe dysku nadrzędnego i podrzędnego nie zgadzają się"
|
||||
IDS_4134 "Nie można naprawić sygnatury czasowej VHD."
|
||||
IDS_4135 "%01i:%02i"
|
||||
|
||||
IDS_4352 "MFM/RLL"
|
||||
IDS_4353 "XTA"
|
||||
IDS_4354 "ESDI"
|
||||
IDS_4355 "IDE"
|
||||
IDS_4356 "ATAPI"
|
||||
IDS_4357 "SCSI"
|
||||
|
||||
IDS_4608 "MFM/RLL (%01i:%01i)"
|
||||
IDS_4609 "XTA (%01i:%01i)"
|
||||
IDS_4610 "ESDI (%01i:%01i)"
|
||||
IDS_4611 "IDE (%01i:%01i)"
|
||||
IDS_4612 "ATAPI (%01i:%01i)"
|
||||
IDS_4613 "SCSI (%01i:%02i)"
|
||||
|
||||
IDS_5120 "CD-ROM %i (%s): %s"
|
||||
|
||||
IDS_5376 "Wyłączony"
|
||||
IDS_5381 "ATAPI"
|
||||
IDS_5382 "SCSI"
|
||||
|
||||
IDS_5632 "Wyłączony"
|
||||
IDS_5637 "ATAPI (%01i:%01i)"
|
||||
IDS_5638 "SCSI (%01i:%02i)"
|
||||
|
||||
IDS_5888 "160 kB"
|
||||
IDS_5889 "180 kB"
|
||||
IDS_5890 "320 kB"
|
||||
IDS_5891 "360 kB"
|
||||
IDS_5892 "640 kB"
|
||||
IDS_5893 "720 kB"
|
||||
IDS_5894 "1,2 MB"
|
||||
IDS_5895 "1,25 MB"
|
||||
IDS_5896 "1,44 MB"
|
||||
IDS_5897 "DMF (klaster 1024)"
|
||||
IDS_5898 "DMF (klaster 2048)"
|
||||
IDS_5899 "2,88 MB"
|
||||
IDS_5900 "ZIP 100"
|
||||
IDS_5901 "ZIP 250"
|
||||
IDS_5902 "3.5"" 128Mb M.O. (ISO 10090)"
|
||||
IDS_5903 "3.5"" 230Mb M.O. (ISO 13963)"
|
||||
IDS_5904 "3.5"" 540Mb M.O. (ISO 15498)"
|
||||
IDS_5905 "3.5"" 640Mb M.O. (ISO 15498)"
|
||||
IDS_5906 "3.5"" 1,3Gb M.O. (GigaMO)"
|
||||
IDS_5907 "3.5"" 2,3Gb M.O. (GigaMO 2)"
|
||||
IDS_5908 "5.25"" 600Mb M.O."
|
||||
IDS_5909 "5.25"" 650Mb M.O."
|
||||
IDS_5910 "5.25"" 1Gb M.O."
|
||||
IDS_5911 "5.25"" 1,3Gb M.O."
|
||||
|
||||
IDS_6144 "Idealne obroty"
|
||||
IDS_6145 "1%% poniżej idealnych obrotów"
|
||||
IDS_6146 "1.5%% poniżej idealnych obrotów"
|
||||
IDS_6147 "2%% poniżej idealnych obrotów"
|
||||
|
||||
IDS_7168 "(Domyślne ustawienie systemowe)"
|
||||
END
|
||||
#define IDS_LANG_ENUS IDS_7168
|
||||
|
||||
// Polish (pl-PL) resources
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
@@ -31,8 +31,8 @@ BEGIN
|
||||
END
|
||||
POPUP "&Вид"
|
||||
BEGIN
|
||||
MENUITEM "&Скрыть строку статуса", IDM_VID_HIDE_STATUS_BAR
|
||||
MENUITEM "Hide &toolbar", IDM_VID_HIDE_TOOLBAR
|
||||
MENUITEM "&Скрыть строку состояния", IDM_VID_HIDE_STATUS_BAR
|
||||
MENUITEM "С&крыть панель инструментов", IDM_VID_HIDE_TOOLBAR
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Изменяемый размер окна", IDM_VID_RESIZE
|
||||
MENUITEM "&Запомнить размер и положение", IDM_VID_REMEMBER
|
||||
@@ -98,7 +98,7 @@ BEGIN
|
||||
POPUP "&Инструменты"
|
||||
BEGIN
|
||||
MENUITEM "&Настройки машины...", IDM_CONFIG
|
||||
MENUITEM "&Обновление значков строки статуса", IDM_UPDATE_ICONS
|
||||
MENUITEM "&Обновление значков строки состояния", IDM_UPDATE_ICONS
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Сделать с&криншот\tCtrl+F11", IDM_ACTION_SCREENSHOT
|
||||
MENUITEM SEPARATOR
|
||||
@@ -208,7 +208,7 @@ CdromSubmenu MENU DISCARDABLE
|
||||
BEGIN
|
||||
POPUP ""
|
||||
BEGIN
|
||||
MENUITEM "&Mute", IDM_CDROM_MUTE
|
||||
MENUITEM "О&тключить звук", IDM_CDROM_MUTE
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "П&устой", IDM_CDROM_EMPTY
|
||||
MENUITEM "&Снова загрузить предыдущий образ", IDM_CDROM_RELOAD
|
||||
@@ -294,8 +294,8 @@ END
|
||||
#define STR_MACHINE_TYPE "Тип машины:"
|
||||
#define STR_MACHINE "Системная плата:"
|
||||
#define STR_CONFIGURE "Настройка"
|
||||
#define STR_CPU_TYPE "Тип ЦПУ:"
|
||||
#define STR_SPEED "Speed:"
|
||||
#define STR_CPU_TYPE "Тип ЦП:"
|
||||
#define STR_SPEED "Скорость:"
|
||||
#define STR_FPU "FPU:"
|
||||
#define STR_WAIT_STATES "Циклы ожидания:"
|
||||
#define STR_MB "МБ"
|
||||
@@ -463,7 +463,7 @@ BEGIN
|
||||
IDS_2102 "Система управления полетом Thrustmaster"
|
||||
IDS_2103 "Нет"
|
||||
IDS_2104 "Невозможно загрузить ускорители клавиатуры."
|
||||
IDS_2105 "Невозможно зарегистрировать необработанный ввод."
|
||||
IDS_2105 "Невозможно зарегистрировать необработанный (RAW) ввод."
|
||||
IDS_2106 "%u"
|
||||
IDS_2107 "%u МБ (CHS: %i, %i, %i)"
|
||||
IDS_2108 "Дисковод %i (%s): %ls"
|
||||
@@ -525,21 +525,21 @@ BEGIN
|
||||
IDS_2143 "Шейдеры OpenGL (*.GLSL)\0*.GLSL\0Все файлы (*.*)\0*.*\0"
|
||||
IDS_2144 "Параметры OpenGL"
|
||||
IDS_2145 "Вы загружаете неподдерживаемую конфигурацию"
|
||||
IDS_2146 "Выбор типов CPU для этой системной платы на данной эмулируемой машине отключен.\n\nЭто позволяет выбрать процессор, который в противном случае несовместим с выбранной материнской платой. Однако, вы можете столкнуться с несовместимостью с BIOS материнской платы или другим ПО.\n\nВключение этого параметра официально не поддерживается, и все поданные отчеты об ошибках могут быть закрыты как недействительные."
|
||||
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_2151 "Образы картриджей (*.A;*.B;*.JRC)\0*.A;*.B;*.JRC\0Все файлы (*.*)\0*.*\0"
|
||||
IDS_2152 "Error initializing renderer"
|
||||
IDS_2153 "OpenGL (3.0 Core) renderer could not be initialized. Use another renderer."
|
||||
IDS_2154 "Resume execution"
|
||||
IDS_2155 "Pause execution"
|
||||
IDS_2156 "Press Ctrl+Alt+Del"
|
||||
IDS_2157 "Press Ctrl+Alt+Esc"
|
||||
IDS_2158 "Hard reset"
|
||||
IDS_2159 "ACPI shutdown"
|
||||
IDS_2160 "Settings"
|
||||
IDS_2152 "Ошибка инициализации рендерера"
|
||||
IDS_2153 "Невозможно инициализировать рендерер OpenGL (3.0). Пожалуйста, используйте другой рендерер."
|
||||
IDS_2154 "Возобновить выполнение"
|
||||
IDS_2155 "Приостановить выполнение"
|
||||
IDS_2156 "Нажать Ctrl+Alt+Del"
|
||||
IDS_2157 "Нажать Ctrl+Alt+Esc"
|
||||
IDS_2158 "Холодная перезагрузка"
|
||||
IDS_2159 "Сигнал завершения ACPI"
|
||||
IDS_2160 "Настройки машины"
|
||||
END
|
||||
|
||||
STRINGTABLE DISCARDABLE
|
||||
@@ -548,10 +548,10 @@ BEGIN
|
||||
IDS_4097 "%01i:%01i"
|
||||
IDS_4098 "%01i"
|
||||
IDS_4099 "MFM/RLL или ESDI дисководов CD-ROM никогда не существовало"
|
||||
IDS_4100 "Custom..."
|
||||
IDS_4101 "Custom (large)..."
|
||||
IDS_4100 "Задать вручную..."
|
||||
IDS_4101 "Задать вручную (large)..."
|
||||
IDS_4102 "Создать новый жёсткий диск"
|
||||
IDS_4103 "Добавить существующий жёсткий диск"
|
||||
IDS_4103 "Выбрать существующий жёсткий диск"
|
||||
IDS_4104 "Размер образов дисков HDI не может превышать 4 ГБ."
|
||||
IDS_4105 "Размер образов дисков не может превышать 127 ГБ."
|
||||
IDS_4106 "Образы жёстких дисков (*.HD?;*.IM?;*.VHD)\0*.HD?;*.IM?;*.VHD\0Все файлы (*.*)\0*.*\0"
|
||||
|
||||
@@ -52,8 +52,13 @@ typedef struct {
|
||||
} disk_size_t;
|
||||
|
||||
|
||||
static const disk_size_t disk_sizes[14] = { { 0, 1, 2, 1, 0, 40, 8, 2, 0xfe, 2, 2, 1, 64 }, /* 160k */
|
||||
{ 0, 1, 2, 1, 0, 40, 9, 2, 0xfc, 2, 2, 1, 64 }, /* 180k */
|
||||
static const disk_size_t disk_sizes[14] = {
|
||||
// { 1, 1, 2, 1, 1, 77, 26, 0, 0, 4, 2, 6, 68 }, /* 250k 8" */
|
||||
// { 1, 2, 2, 1, 1, 77, 26, 0, 0, 4, 2, 6, 68 }, /* 500k 8" */
|
||||
// { 1, 1, 2, 1, 1, 77, 8, 3, 0, 1, 2, 2, 192 }, /* 616k 8" */
|
||||
// { 1, 2, 0, 1, 1, 77, 8, 3, 0, 1, 2, 2, 192 }, /* 1232k 8" */
|
||||
{ 0, 1, 2, 1, 0, 40, 8, 2, 0xfe, 1, 2, 1, 64 }, /* 160k */
|
||||
{ 0, 1, 2, 1, 0, 40, 9, 2, 0xfc, 1, 2, 2, 64 }, /* 180k */
|
||||
{ 0, 2, 2, 1, 0, 40, 8, 2, 0xff, 2, 2, 1, 112 }, /* 320k */
|
||||
{ 0, 2, 2, 1, 0, 40, 9, 2, 0xfd, 2, 2, 2, 112 }, /* 360k */
|
||||
{ 0, 2, 2, 1, 0, 80, 8, 2, 0xfb, 2, 2, 2, 112 }, /* 640k */
|
||||
@@ -698,7 +703,7 @@ NewFloppyDialogProcedure(HWND hdlg, UINT message, WPARAM wParam, LPARAM lParam)
|
||||
uint8_t disk_size, rpm_mode;
|
||||
int ret;
|
||||
FILE *f;
|
||||
int zip_types, mo_types;
|
||||
int zip_types, mo_types, floppy_types;
|
||||
wchar_t *twcs;
|
||||
|
||||
switch (message) {
|
||||
@@ -716,7 +721,8 @@ NewFloppyDialogProcedure(HWND hdlg, UINT message, WPARAM wParam, LPARAM lParam)
|
||||
for (i = 0; i < mo_types; i++)
|
||||
SendMessage(h, CB_ADDSTRING, 0, win_get_string(IDS_5902 + i));
|
||||
} else {
|
||||
for (i = 0; i < 12; i++)
|
||||
floppy_types = 12;
|
||||
for (i = 0; i < floppy_types; i++)
|
||||
SendMessage(h, CB_ADDSTRING, 0, win_get_string(IDS_5888 + i));
|
||||
}
|
||||
SendMessage(h, CB_SETCURSEL, 0, 0);
|
||||
|
||||
@@ -872,6 +872,8 @@ static void opengl_main(void* param)
|
||||
|
||||
static void opengl_blit(int x, int y, int w, int h)
|
||||
{
|
||||
int row;
|
||||
|
||||
if ((x < 0) || (y < 0) || (w <= 0) || (h <= 0) || (w > 2048) || (h > 2048) || (buffer32 == NULL) || (thread == NULL) ||
|
||||
atomic_flag_test_and_set(&blit_info[write_pos].in_use))
|
||||
{
|
||||
@@ -879,7 +881,8 @@ static void opengl_blit(int x, int y, int w, int h)
|
||||
return;
|
||||
}
|
||||
|
||||
video_copy(blit_info[write_pos].buffer, &(buffer32->line[y][x]), h * ROW_LENGTH * sizeof(uint32_t));
|
||||
for (row = 0; row < h; ++row)
|
||||
video_copy(&(((uint8_t *) blit_info[write_pos].buffer)[row * ROW_LENGTH * sizeof(uint32_t)]), &(buffer32->line[y + row][x]), w * sizeof(uint32_t));
|
||||
|
||||
if (screenshots)
|
||||
video_screenshot(blit_info[write_pos].buffer, 0, 0, ROW_LENGTH);
|
||||
|
||||
@@ -274,6 +274,7 @@ sdl_blit_ex(int x, int y, int w, int h)
|
||||
SDL_Rect r_src;
|
||||
void *pixeldata;
|
||||
int pitch, ret;
|
||||
int row;
|
||||
|
||||
if (!sdl_enabled || (x < 0) || (y < 0) || (w <= 0) || (h <= 0) || (w > 2048) || (h > 2048) || (buffer32 == NULL) || (sdl_render == NULL) || (sdl_tex == NULL)) {
|
||||
video_blit_complete();
|
||||
@@ -284,7 +285,8 @@ sdl_blit_ex(int x, int y, int w, int h)
|
||||
|
||||
SDL_LockTexture(sdl_tex, 0, &pixeldata, &pitch);
|
||||
|
||||
video_copy(pixeldata, &(buffer32->line[y][x]), h * 2048 * sizeof(uint32_t));
|
||||
for (row = 0; row < h; ++row)
|
||||
video_copy(&(((uint8_t *) pixeldata)[row * 2048 * sizeof(uint32_t)]), &(buffer32->line[y + row][x]), w * sizeof(uint32_t));
|
||||
|
||||
if (screenshots)
|
||||
video_screenshot((uint32_t *) pixeldata, 0, 0, 2048);
|
||||
|
||||
Reference in New Issue
Block a user