mirror of
https://github.com/86Box/86Box.git
synced 2026-02-23 18:08:20 -07:00
Merge branch '86Box:master' into main
This commit is contained in:
@@ -36,7 +36,7 @@ if(MUNT_EXTERNAL)
|
||||
endif()
|
||||
|
||||
project(86Box
|
||||
VERSION 4.2.2
|
||||
VERSION 4.3
|
||||
DESCRIPTION "Emulator of x86-based systems"
|
||||
HOMEPAGE_URL "https://86box.net"
|
||||
LANGUAGES C CXX)
|
||||
|
||||
4
debian/changelog
vendored
4
debian/changelog
vendored
@@ -1,5 +1,5 @@
|
||||
86box (4.2.2) UNRELEASED; urgency=medium
|
||||
86box (4.3) UNRELEASED; urgency=medium
|
||||
|
||||
* Bump release.
|
||||
|
||||
-- Jasmine Iwanek <jriwanek@gmail.com> Sat, 28 Sep 2024 18:31:57 +0200
|
||||
-- Jasmine Iwanek <jriwanek@gmail.com> Wed, 13 Nov 2024 06:31:46 +0100
|
||||
|
||||
135
src/config.c
135
src/config.c
@@ -118,7 +118,8 @@ load_general(void)
|
||||
memset(temp, '\0', sizeof(temp));
|
||||
p = ini_section_get_string(cat, "vid_renderer", "default");
|
||||
vid_api = plat_vidapi(p);
|
||||
ini_section_delete_var(cat, "vid_api");
|
||||
if (!strcmp(p, "default"))
|
||||
ini_section_delete_var(cat, "vid_api");
|
||||
|
||||
video_fullscreen_scale = ini_section_get_int(cat, "video_fullscreen_scale", 1);
|
||||
|
||||
@@ -202,12 +203,12 @@ load_general(void)
|
||||
if (window_remember) {
|
||||
p = ini_section_get_string(cat, "window_coordinates", NULL);
|
||||
if (p == NULL)
|
||||
p = "0, 0, 0, 0";
|
||||
p = "640, 480, 0, 0";
|
||||
sscanf(p, "%i, %i, %i, %i", &cw, &ch, &cx, &cy);
|
||||
} else
|
||||
} else {
|
||||
cw = ch = cx = cy = 0;
|
||||
|
||||
ini_section_delete_var(cat, "window_coordinates");
|
||||
ini_section_delete_var(cat, "window_coordinates");
|
||||
}
|
||||
|
||||
do_auto_pause = ini_section_get_int(cat, "do_auto_pause", 0);
|
||||
|
||||
@@ -404,7 +405,7 @@ load_machine(void)
|
||||
else
|
||||
time_sync = TIME_SYNC_ENABLED;
|
||||
} else
|
||||
time_sync = !!ini_section_get_int(cat, "enable_sync", 1);
|
||||
time_sync = TIME_SYNC_ENABLED;
|
||||
|
||||
pit_mode = ini_section_get_int(cat, "pit_mode", -1);
|
||||
}
|
||||
@@ -878,7 +879,7 @@ load_storage_controllers(void)
|
||||
path_normalize(cassette_fname);
|
||||
}
|
||||
|
||||
p = ini_section_get_string(cat, "cassette_mode", "");
|
||||
p = ini_section_get_string(cat, "cassette_mode", "load");
|
||||
if (strlen(p) > 511)
|
||||
fatal("load_storage_controllers(): strlen(p) > 511\n");
|
||||
else
|
||||
@@ -902,10 +903,34 @@ load_storage_controllers(void)
|
||||
}
|
||||
}
|
||||
cassette_pos = ini_section_get_int(cat, "cassette_position", 0);
|
||||
if (!cassette_pos)
|
||||
ini_section_delete_var(cat, "cassette_position");
|
||||
cassette_srate = ini_section_get_int(cat, "cassette_srate", 44100);
|
||||
if (cassette_srate == 44100)
|
||||
ini_section_delete_var(cat, "cassette_srate");
|
||||
cassette_append = !!ini_section_get_int(cat, "cassette_append", 0);
|
||||
if (!cassette_append)
|
||||
ini_section_delete_var(cat, "cassette_append");
|
||||
cassette_pcm = ini_section_get_int(cat, "cassette_pcm", 0);
|
||||
if (!cassette_pcm)
|
||||
ini_section_delete_var(cat, "cassette_pcm");
|
||||
cassette_ui_writeprot = !!ini_section_get_int(cat, "cassette_writeprot", 0);
|
||||
if (!cassette_ui_writeprot)
|
||||
ini_section_delete_var(cat, "cassette_writeprot");
|
||||
|
||||
if (!cassette_enable) {
|
||||
ini_section_delete_var(cat, "cassette_file");
|
||||
ini_section_delete_var(cat, "cassette_mode");
|
||||
for (int i = 0; i < MAX_PREV_IMAGES; i++) {
|
||||
sprintf(temp, "cassette_image_history_%02i", i + 1);
|
||||
ini_section_delete_var(cat, temp);
|
||||
}
|
||||
ini_section_delete_var(cat, "cassette_position");
|
||||
ini_section_delete_var(cat, "cassette_srate");
|
||||
ini_section_delete_var(cat, "cassette_append");
|
||||
ini_section_delete_var(cat, "cassette_pcm");
|
||||
ini_section_delete_var(cat, "cassette_ui_writeprot");
|
||||
}
|
||||
|
||||
for (c = 0; c < 2; c++) {
|
||||
sprintf(temp, "cartridge_%02i_fn", c + 1);
|
||||
@@ -945,6 +970,9 @@ load_storage_controllers(void)
|
||||
}
|
||||
|
||||
lba_enhancer_enabled = !!ini_section_get_int(cat, "lba_enhancer_enabled", 0);
|
||||
|
||||
if (!lba_enhancer_enabled)
|
||||
ini_section_delete_var(cat, "lba_enhancer_enabled");
|
||||
}
|
||||
|
||||
/* Load "Hard Disks" section. */
|
||||
@@ -1063,9 +1091,8 @@ load_hard_disks(void)
|
||||
|
||||
if (hdd[c].ide_channel > 7)
|
||||
hdd[c].ide_channel = 7;
|
||||
} else {
|
||||
} else
|
||||
ini_section_delete_var(cat, temp);
|
||||
}
|
||||
|
||||
/* SCSI */
|
||||
if (hdd[c].bus == HDD_BUS_SCSI) {
|
||||
@@ -1128,24 +1155,24 @@ load_hard_disks(void)
|
||||
sprintf(temp, "hdd_%02i_parameters", c + 1);
|
||||
ini_section_delete_var(cat, temp);
|
||||
|
||||
sprintf(temp, "hdd_%02i_preide_channels", c + 1);
|
||||
sprintf(temp, "hdd_%02i_mfm_channel", c + 1);
|
||||
ini_section_delete_var(cat, temp);
|
||||
|
||||
sprintf(temp, "hdd_%02i_ide_channels", c + 1);
|
||||
sprintf(temp, "hdd_%02i_xta_channel", c + 1);
|
||||
ini_section_delete_var(cat, temp);
|
||||
|
||||
sprintf(temp, "hdd_%02i_scsi_id", c + 1);
|
||||
sprintf(temp, "hdd_%02i_esdi_channel", c + 1);
|
||||
ini_section_delete_var(cat, temp);
|
||||
|
||||
sprintf(temp, "hdd_%02i_ide_channel", c + 1);
|
||||
ini_section_delete_var(cat, temp);
|
||||
|
||||
sprintf(temp, "hdd_%02i_scsi_location", c + 1);
|
||||
ini_section_delete_var(cat, temp);
|
||||
|
||||
sprintf(temp, "hdd_%02i_fn", c + 1);
|
||||
ini_section_delete_var(cat, temp);
|
||||
}
|
||||
|
||||
sprintf(temp, "hdd_%02i_mfm_channel", c + 1);
|
||||
ini_section_delete_var(cat, temp);
|
||||
|
||||
sprintf(temp, "hdd_%02i_ide_channel", c + 1);
|
||||
ini_section_delete_var(cat, temp);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1157,6 +1184,7 @@ load_floppy_and_cdrom_drives(void)
|
||||
char temp[512];
|
||||
char tmp2[512];
|
||||
char *p;
|
||||
char *def_type;
|
||||
char s[512];
|
||||
unsigned int board = 0;
|
||||
unsigned int dev = 0;
|
||||
@@ -1261,11 +1289,13 @@ load_floppy_and_cdrom_drives(void)
|
||||
cdrom[c].speed = ini_section_get_int(cat, temp, 8);
|
||||
|
||||
sprintf(temp, "cdrom_%02i_type", c + 1);
|
||||
p = ini_section_get_string(cat, temp, (c == 1) ? "86BOX_CD-ROM_1.00" : "none");
|
||||
def_type = (c == 1) ? "86BOX_CD-ROM_1.00" : "none";
|
||||
p = ini_section_get_string(cat, temp, def_type);
|
||||
cdrom_set_type(c, cdrom_get_from_internal_name(p));
|
||||
if (cdrom_get_type(c) > KNOWN_CDROM_DRIVE_TYPES)
|
||||
cdrom_set_type(c, KNOWN_CDROM_DRIVE_TYPES);
|
||||
ini_section_delete_var(cat, temp);
|
||||
if (!strcmp(p, def_type))
|
||||
ini_section_delete_var(cat, temp);
|
||||
|
||||
/* Default values, needed for proper operation of the Settings dialog. */
|
||||
cdrom[c].ide_channel = cdrom[c].scsi_device_id = c + 2;
|
||||
@@ -1356,7 +1386,7 @@ load_floppy_and_cdrom_drives(void)
|
||||
sprintf(temp, "cdrom_%02i_ide_channel", c + 1);
|
||||
ini_section_delete_var(cat, temp);
|
||||
|
||||
sprintf(temp, "cdrom_%02i_scsi_id", c + 1);
|
||||
sprintf(temp, "cdrom_%02i_scsi_location", c + 1);
|
||||
ini_section_delete_var(cat, temp);
|
||||
|
||||
sprintf(temp, "cdrom_%02i_image_path", c + 1);
|
||||
@@ -1486,7 +1516,7 @@ load_other_removable_devices(void)
|
||||
sprintf(temp, "zip_%02i_ide_channel", c + 1);
|
||||
ini_section_delete_var(cat, temp);
|
||||
|
||||
sprintf(temp, "zip_%02i_scsi_id", c + 1);
|
||||
sprintf(temp, "zip_%02i_scsi_location", c + 1);
|
||||
ini_section_delete_var(cat, temp);
|
||||
|
||||
sprintf(temp, "zip_%02i_image_path", c + 1);
|
||||
@@ -1599,7 +1629,7 @@ load_other_removable_devices(void)
|
||||
sprintf(temp, "mo_%02i_ide_channel", c + 1);
|
||||
ini_section_delete_var(cat, temp);
|
||||
|
||||
sprintf(temp, "mo_%02i_scsi_id", c + 1);
|
||||
sprintf(temp, "mo_%02i_scsi_location", c + 1);
|
||||
ini_section_delete_var(cat, temp);
|
||||
|
||||
sprintf(temp, "mo_%02i_image_path", c + 1);
|
||||
@@ -1626,15 +1656,33 @@ load_other_peripherals(void)
|
||||
unittester_enabled = !!ini_section_get_int(cat, "unittester_enabled", 0);
|
||||
novell_keycard_enabled = !!ini_section_get_int(cat, "novell_keycard_enabled", 0);
|
||||
|
||||
if (!bugger_enabled)
|
||||
ini_section_delete_var(cat, "bugger_enabled");
|
||||
|
||||
if (!postcard_enabled)
|
||||
ini_section_delete_var(cat, "postcard_enabled");
|
||||
|
||||
if (!unittester_enabled)
|
||||
ini_section_delete_var(cat, "unittester_enabled");
|
||||
|
||||
if (!novell_keycard_enabled)
|
||||
ini_section_delete_var(cat, "novell_keycard_enabled");
|
||||
|
||||
for (uint8_t c = 0; c < ISAMEM_MAX; c++) {
|
||||
sprintf(temp, "isamem%d_type", c);
|
||||
|
||||
p = ini_section_get_string(cat, temp, "none");
|
||||
isamem_type[c] = isamem_get_from_internal_name(p);
|
||||
|
||||
if (!strcmp(p, "none"))
|
||||
ini_section_delete_var(cat, temp);
|
||||
}
|
||||
|
||||
p = ini_section_get_string(cat, "isartc_type", "none");
|
||||
isartc_type = isartc_get_from_internal_name(p);
|
||||
|
||||
if (!strcmp(p, "none"))
|
||||
ini_section_delete_var(cat, temp);
|
||||
}
|
||||
|
||||
/* Load the specified or a default configuration file. */
|
||||
@@ -2015,17 +2063,20 @@ save_machine(void)
|
||||
|
||||
/* Write the mem_size explicitly to the setttings in order to help managers
|
||||
to display it without having the actual machine table. */
|
||||
ini_section_delete_var(cat, "mem_size");
|
||||
ini_section_set_int(cat, "mem_size", mem_size);
|
||||
|
||||
ini_section_set_int(cat, "cpu_use_dynarec", cpu_use_dynarec);
|
||||
ini_section_set_int(cat, "fpu_softfloat", fpu_softfloat);
|
||||
|
||||
if (fpu_softfloat == 0)
|
||||
ini_section_delete_var(cat, "fpu_softfloat");
|
||||
else
|
||||
ini_section_set_int(cat, "fpu_softfloat", fpu_softfloat);
|
||||
|
||||
if (time_sync & TIME_SYNC_ENABLED)
|
||||
if (time_sync & TIME_SYNC_UTC)
|
||||
ini_section_set_string(cat, "time_sync", "utc");
|
||||
else
|
||||
ini_section_set_string(cat, "time_sync", "local");
|
||||
ini_section_delete_var(cat, "time_sync");
|
||||
else
|
||||
ini_section_set_string(cat, "time_sync", "disabled");
|
||||
|
||||
@@ -2215,7 +2266,10 @@ save_sound(void)
|
||||
else
|
||||
ini_section_set_string(cat, "sound_type", (sound_is_float == 1) ? "float" : "int16");
|
||||
|
||||
ini_section_set_string(cat, "fm_driver", (fm_driver == FM_DRV_NUKED) ? "nuked" : "ymfm");
|
||||
if (fm_driver == FM_DRV_NUKED)
|
||||
ini_section_delete_var(cat, "fm_driver");
|
||||
else
|
||||
ini_section_set_string(cat, "fm_driver", "ymfm");
|
||||
|
||||
ini_delete_section_if_empty(config, cat);
|
||||
}
|
||||
@@ -2298,11 +2352,10 @@ save_ports(void)
|
||||
ini_section_set_int(cat, temp, com_ports[c].enabled);
|
||||
|
||||
sprintf(temp, "serial%d_passthrough_enabled", c + 1);
|
||||
if (serial_passthrough_enabled[c]) {
|
||||
if (serial_passthrough_enabled[c])
|
||||
ini_section_set_int(cat, temp, 1);
|
||||
} else {
|
||||
else
|
||||
ini_section_delete_var(cat, temp);
|
||||
}
|
||||
}
|
||||
|
||||
for (c = 0; c < PARALLEL_MAX; c++) {
|
||||
@@ -2331,6 +2384,7 @@ save_storage_controllers(void)
|
||||
ini_section_t cat = ini_find_or_create_section(config, "Storage controllers");
|
||||
char temp[512];
|
||||
int c;
|
||||
char *def_hdc;
|
||||
|
||||
ini_section_delete_var(cat, "scsicard");
|
||||
|
||||
@@ -2350,8 +2404,16 @@ save_storage_controllers(void)
|
||||
ini_section_set_string(cat, "fdc",
|
||||
fdc_card_get_internal_name(fdc_current[0]));
|
||||
|
||||
ini_section_set_string(cat, "hdc",
|
||||
hdc_get_internal_name(hdc_current[0]));
|
||||
if (machine_has_flags(machine, MACHINE_HDC))
|
||||
def_hdc = "internal";
|
||||
else
|
||||
def_hdc = "none";
|
||||
|
||||
if (!strcmp(hdc_get_internal_name(hdc_current[0]), def_hdc))
|
||||
ini_section_delete_var(cat, "hdc");
|
||||
else
|
||||
ini_section_set_string(cat, "hdc",
|
||||
hdc_get_internal_name(hdc_current[0]));
|
||||
|
||||
if (cdrom_interface_current == 0)
|
||||
ini_section_delete_var(cat, "cdrom_interface");
|
||||
@@ -2369,8 +2431,6 @@ save_storage_controllers(void)
|
||||
else
|
||||
ini_section_set_int(cat, "ide_qua", ide_qua_enabled);
|
||||
|
||||
ini_delete_section_if_empty(config, cat);
|
||||
|
||||
if (cassette_enable == 0)
|
||||
ini_section_delete_var(cat, "cassette_enabled");
|
||||
else
|
||||
@@ -2386,7 +2446,7 @@ save_storage_controllers(void)
|
||||
ini_section_set_string(cat, "cassette_file", cassette_fname);
|
||||
}
|
||||
|
||||
if (strlen(cassette_mode) == 0)
|
||||
if (!strcmp(cassette_mode, "load"))
|
||||
ini_section_delete_var(cat, "cassette_mode");
|
||||
else
|
||||
ini_section_set_string(cat, "cassette_mode", cassette_mode);
|
||||
@@ -2460,6 +2520,8 @@ save_storage_controllers(void)
|
||||
ini_section_delete_var(cat, "lba_enhancer_enabled");
|
||||
else
|
||||
ini_section_set_int(cat, "lba_enhancer_enabled", 1);
|
||||
|
||||
ini_delete_section_if_empty(config, cat);
|
||||
}
|
||||
|
||||
/* Save "Other Peripherals" section. */
|
||||
@@ -2524,9 +2586,8 @@ save_hard_disks(void)
|
||||
sprintf(tmp2, "%u, %u, %u, %i, %s",
|
||||
hdd[c].spt, hdd[c].hpc, hdd[c].tracks, hdd[c].wp, p);
|
||||
ini_section_set_string(cat, temp, tmp2);
|
||||
} else {
|
||||
} else
|
||||
ini_section_delete_var(cat, temp);
|
||||
}
|
||||
|
||||
sprintf(temp, "hdd_%02i_mfm_channel", c + 1);
|
||||
if (hdd_is_valid(c) && (hdd[c].bus == HDD_BUS_MFM))
|
||||
|
||||
@@ -384,9 +384,6 @@ softresetx86(void)
|
||||
if (soft_reset_mask)
|
||||
return;
|
||||
|
||||
if (ibm8514_active || xga_active)
|
||||
vga_on = 1;
|
||||
|
||||
reset_common(0);
|
||||
}
|
||||
|
||||
|
||||
@@ -103,6 +103,14 @@ device_set_context(device_context_t *c, const device_t *dev, int inst)
|
||||
void * single_sec = config_find_section((char *) dev->name);
|
||||
if ((sec == NULL) && (single_sec != NULL))
|
||||
config_rename_section(single_sec, c->name);
|
||||
} else if (!strcmp(dev->name, "PS/2 Mouse")) {
|
||||
sprintf(c->name, "%s", dev->name);
|
||||
|
||||
/* Migrate the old "Standard PS/2 Mouse" section */
|
||||
const void *sec = config_find_section(c->name);
|
||||
void * old_sec = config_find_section("Standard PS/2 Mouse");
|
||||
if ((sec == NULL) && (old_sec != NULL))
|
||||
config_rename_section(old_sec, c->name);
|
||||
} else
|
||||
sprintf(c->name, "%s", dev->name);
|
||||
}
|
||||
|
||||
@@ -857,7 +857,7 @@ static const device_config_t ibmxt_32k_config[] = {
|
||||
// clang-format off
|
||||
{
|
||||
.name = "size",
|
||||
.description = "Memory Size",
|
||||
.description = "Memory size",
|
||||
.type = CONFIG_SPINNER,
|
||||
.default_string = "",
|
||||
.default_int = 32,
|
||||
@@ -905,7 +905,7 @@ static const device_config_t ibmxt_64k_config[] = {
|
||||
// clang-format off
|
||||
{
|
||||
.name = "size",
|
||||
.description = "Memory Size",
|
||||
.description = "Memory size",
|
||||
.type = CONFIG_SPINNER,
|
||||
.default_string = "",
|
||||
.default_int = 64,
|
||||
@@ -953,7 +953,7 @@ static const device_config_t ibmxt_config[] = {
|
||||
// clang-format off
|
||||
{
|
||||
.name = "size",
|
||||
.description = "Memory Size",
|
||||
.description = "Memory size",
|
||||
.type = CONFIG_SPINNER,
|
||||
.default_string = "",
|
||||
.default_int = 128,
|
||||
@@ -1001,7 +1001,7 @@ static const device_config_t genericxt_config[] = {
|
||||
// clang-format off
|
||||
{
|
||||
.name = "size",
|
||||
.description = "Memory Size",
|
||||
.description = "Memory size",
|
||||
.type = CONFIG_SPINNER,
|
||||
.default_string = "",
|
||||
.default_int = 16,
|
||||
@@ -1049,7 +1049,7 @@ static const device_config_t msramcard_config[] = {
|
||||
// clang-format off
|
||||
{
|
||||
.name = "size",
|
||||
.description = "Memory Size",
|
||||
.description = "Memory size",
|
||||
.type = CONFIG_SPINNER,
|
||||
.default_string = "",
|
||||
.default_int = 64,
|
||||
@@ -1097,7 +1097,7 @@ static const device_config_t mssystemcard_config[] = {
|
||||
// clang-format off
|
||||
{
|
||||
.name = "size",
|
||||
.description = "Memory Size",
|
||||
.description = "Memory size",
|
||||
.type = CONFIG_SPINNER,
|
||||
.default_string = "",
|
||||
.default_int = 64,
|
||||
@@ -1159,7 +1159,7 @@ static const device_config_t ibmat_config[] = {
|
||||
// clang-format off
|
||||
{
|
||||
.name = "size",
|
||||
.description = "Memory Size",
|
||||
.description = "Memory size",
|
||||
.type = CONFIG_SPINNER,
|
||||
.default_string = "",
|
||||
.default_int = 512,
|
||||
@@ -1207,7 +1207,7 @@ static const device_config_t genericat_config[] = {
|
||||
// clang-format off
|
||||
{
|
||||
.name = "size",
|
||||
.description = "Memory Size",
|
||||
.description = "Memory size",
|
||||
.type = CONFIG_SPINNER,
|
||||
.default_string = "",
|
||||
.default_int = 512,
|
||||
@@ -1255,7 +1255,7 @@ static const device_config_t p5pak_config[] = {
|
||||
// clang-format off
|
||||
{
|
||||
.name = "size",
|
||||
.description = "Memory Size",
|
||||
.description = "Memory size",
|
||||
.type = CONFIG_SPINNER,
|
||||
.default_string = "",
|
||||
.default_int = 128,
|
||||
@@ -1303,7 +1303,7 @@ static const device_config_t a6pak_config[] = {
|
||||
// clang-format off
|
||||
{
|
||||
.name = "size",
|
||||
.description = "Memory Size",
|
||||
.description = "Memory size",
|
||||
.type = CONFIG_SPINNER,
|
||||
.default_string = "",
|
||||
.default_int = 64,
|
||||
@@ -1351,7 +1351,7 @@ static const device_config_t ems5150_config[] = {
|
||||
// clang-format off
|
||||
{
|
||||
.name = "size",
|
||||
.description = "Memory Size",
|
||||
.description = "Memory size",
|
||||
.type = CONFIG_SPINNER,
|
||||
.default_string = "",
|
||||
.default_int = 256,
|
||||
@@ -1402,7 +1402,7 @@ static const device_config_t ev159_config[] = {
|
||||
// clang-format off
|
||||
{
|
||||
.name = "size",
|
||||
.description = "Memory Size",
|
||||
.description = "Memory size",
|
||||
.type = CONFIG_SPINNER,
|
||||
.default_string = "",
|
||||
.default_int = 512,
|
||||
@@ -1544,7 +1544,7 @@ static const device_config_t ev165a_config[] = {
|
||||
// clang-format off
|
||||
{
|
||||
.name = "size",
|
||||
.description = "Memory Size",
|
||||
.description = "Memory size",
|
||||
.type = CONFIG_SPINNER,
|
||||
.default_string = "",
|
||||
.default_int = 512,
|
||||
@@ -1669,7 +1669,7 @@ static const device_config_t brxt_config[] = {
|
||||
},
|
||||
{
|
||||
.name = "size",
|
||||
.description = "Memory Size",
|
||||
.description = "Memory size",
|
||||
.type = CONFIG_SPINNER,
|
||||
.default_string = "",
|
||||
.default_int = 512,
|
||||
@@ -1762,7 +1762,7 @@ static const device_config_t brat_config[] = {
|
||||
},
|
||||
{
|
||||
.name = "size",
|
||||
.description = "Memory Size",
|
||||
.description = "Memory size",
|
||||
.type = CONFIG_SPINNER,
|
||||
.default_string = "",
|
||||
.default_int = 512,
|
||||
@@ -1841,7 +1841,7 @@ static const device_config_t lotech_config[] = {
|
||||
},
|
||||
{
|
||||
.name = "size",
|
||||
.description = "Memory Size",
|
||||
.description = "Memory size",
|
||||
.type = CONFIG_SPINNER,
|
||||
.default_string = "",
|
||||
.default_int = 2048,
|
||||
@@ -1897,7 +1897,7 @@ static const device_config_t rampage_config[] = {
|
||||
},
|
||||
{
|
||||
.name = "size",
|
||||
.description = "Memory Size",
|
||||
.description = "Memory size",
|
||||
.type = CONFIG_SPINNER,
|
||||
.default_string = "",
|
||||
.default_int = 256, /* Technically 128k, but banks 2-7 must be 256, headaches elsewise */
|
||||
@@ -2009,7 +2009,7 @@ static const device_config_t iab_config[] = {
|
||||
},
|
||||
{
|
||||
.name = "size",
|
||||
.description = "Memory Size",
|
||||
.description = "Memory size",
|
||||
.type = CONFIG_SPINNER,
|
||||
.default_string = "",
|
||||
.default_int = 128,
|
||||
|
||||
@@ -389,7 +389,7 @@ static const device_config_t ps2_config[] = {
|
||||
};
|
||||
|
||||
const device_t mouse_ps2_device = {
|
||||
.name = "Standard PS/2 Mouse",
|
||||
.name = "PS/2 Mouse",
|
||||
.internal_name = "ps2",
|
||||
.flags = DEVICE_PS2,
|
||||
.local = MOUSE_TYPE_PS2,
|
||||
|
||||
@@ -1044,7 +1044,7 @@ static const device_config_t ltsermouse_config[] = {
|
||||
},
|
||||
{
|
||||
.name = "rts_toggle",
|
||||
.description = "Microsoft-compatible RTS toggle",
|
||||
.description = "RTS toggle",
|
||||
.type = CONFIG_BINARY,
|
||||
.default_string = "",
|
||||
.default_int = 0
|
||||
|
||||
@@ -1916,7 +1916,7 @@ victor_v86p_available(void)
|
||||
static const device_config_t dtc_config[] = {
|
||||
{
|
||||
.name = "bios_addr",
|
||||
.description = "BIOS address",
|
||||
.description = "BIOS Address",
|
||||
.type = CONFIG_HEX20,
|
||||
.default_string = "",
|
||||
.default_int = 0xc8000,
|
||||
@@ -1967,7 +1967,7 @@ static const device_config_t st11_config[] = {
|
||||
},
|
||||
{
|
||||
.name = "bios_addr",
|
||||
.description = "BIOS address",
|
||||
.description = "BIOS Address",
|
||||
.type = CONFIG_HEX20,
|
||||
.default_string = "",
|
||||
.default_int = 0xc8000,
|
||||
@@ -1984,15 +1984,15 @@ static const device_config_t st11_config[] = {
|
||||
},
|
||||
{
|
||||
.name = "revision",
|
||||
.description = "Board Revision",
|
||||
.description = "BIOS Revision",
|
||||
.type = CONFIG_SELECTION,
|
||||
.default_string = "",
|
||||
.default_int = 19,
|
||||
.file_filter = "",
|
||||
.spinner = { 0 },
|
||||
.selection = {
|
||||
{ .description = "Rev. 05 (v1.7)", .value = 5 },
|
||||
{ .description = "Rev. 19 (v2.0)", .value = 19 },
|
||||
{ .description = "v1.7", .value = 5 },
|
||||
{ .description = "v2.0", .value = 19 },
|
||||
{ .description = "" }
|
||||
}
|
||||
},
|
||||
@@ -2002,7 +2002,7 @@ static const device_config_t st11_config[] = {
|
||||
static const device_config_t wd_config[] = {
|
||||
{
|
||||
.name = "bios_addr",
|
||||
.description = "BIOS address",
|
||||
.description = "BIOS Address",
|
||||
.type = CONFIG_HEX20,
|
||||
.default_string = "",
|
||||
.default_int = 0xc8000,
|
||||
@@ -2080,7 +2080,7 @@ static const device_config_t wd_nobios_config[] = {
|
||||
static const device_config_t wd_rll_config[] = {
|
||||
{
|
||||
.name = "bios_addr",
|
||||
.description = "BIOS address",
|
||||
.description = "BIOS Address",
|
||||
.type = CONFIG_HEX20,
|
||||
.default_string = "",
|
||||
.default_int = 0xc8000,
|
||||
@@ -2140,7 +2140,7 @@ static const device_config_t wd_rll_config[] = {
|
||||
static const device_config_t wd1004a_config[] = {
|
||||
{
|
||||
.name = "bios_addr",
|
||||
.description = "BIOS address",
|
||||
.description = "BIOS Address",
|
||||
.type = CONFIG_HEX20,
|
||||
.default_string = "",
|
||||
.default_int = 0xc8000,
|
||||
@@ -2186,7 +2186,7 @@ static const device_config_t wd1004a_config[] = {
|
||||
static const device_config_t wd1004_rll_config[] = {
|
||||
{
|
||||
.name = "bios_addr",
|
||||
.description = "BIOS address",
|
||||
.description = "BIOS Address",
|
||||
.type = CONFIG_HEX20,
|
||||
.default_string = "",
|
||||
.default_int = 0xc8000,
|
||||
|
||||
@@ -233,7 +233,7 @@ static const device_config_t xtide_config[] = {
|
||||
// clang-format off
|
||||
{
|
||||
.name = "bios",
|
||||
.description = "BIOS",
|
||||
.description = "BIOS Revision",
|
||||
.type = CONFIG_BIOS,
|
||||
.default_string = "xt",
|
||||
.default_int = 0,
|
||||
@@ -255,7 +255,7 @@ static const device_config_t xtide_at_config[] = {
|
||||
// clang-format off
|
||||
{
|
||||
.name = "bios",
|
||||
.description = "BIOS",
|
||||
.description = "BIOS Revision",
|
||||
.type = CONFIG_BIOS,
|
||||
.default_string = "at",
|
||||
.default_int = 0,
|
||||
|
||||
@@ -295,7 +295,7 @@ hdd_image_load(int id)
|
||||
if (fn[0] == '.') {
|
||||
hdd_image_log("File name starts with .\n");
|
||||
memset(hdd[id].fn, 0, sizeof(hdd[id].fn));
|
||||
return 0;
|
||||
goto fail_raw;
|
||||
}
|
||||
hdd_images[id].file = plat_fopen(fn, "rb+");
|
||||
if (hdd_images[id].file == NULL) {
|
||||
@@ -306,14 +306,14 @@ hdd_image_load(int id)
|
||||
if (hdd[id].wp) {
|
||||
hdd_image_log("A write-protected image must exist\n");
|
||||
memset(hdd[id].fn, 0, sizeof(hdd[id].fn));
|
||||
return 0;
|
||||
goto fail_raw;
|
||||
}
|
||||
|
||||
hdd_images[id].file = plat_fopen(fn, "wb+");
|
||||
if (hdd_images[id].file == NULL) {
|
||||
hdd_image_log("Unable to open image\n");
|
||||
memset(hdd[id].fn, 0, sizeof(hdd[id].fn));
|
||||
return 0;
|
||||
goto fail_raw;
|
||||
} else {
|
||||
if (image_is_hdi(fn)) {
|
||||
full_size = ((uint64_t) hdd[id].spt) * ((uint64_t) hdd[id].hpc) * ((uint64_t) hdd[id].tracks) << 9LL;
|
||||
@@ -389,10 +389,13 @@ retry_vhd:
|
||||
s = full_size = ((uint64_t) hdd[id].spt) * ((uint64_t) hdd[id].hpc) * ((uint64_t) hdd[id].tracks) << 9LL;
|
||||
|
||||
ret = prepare_new_hard_disk(id, full_size);
|
||||
if (ret <= 0)
|
||||
goto fail_raw;
|
||||
return ret;
|
||||
} else {
|
||||
/* Failed for another reason */
|
||||
hdd_image_log("Failed for another reason\n");
|
||||
fail_raw:
|
||||
hdd_images[id].type = HDD_IMAGE_RAW;
|
||||
hdd_images[id].last_sector = (uint32_t) (((uint64_t) hdd[id].spt) * ((uint64_t) hdd[id].hpc) * ((uint64_t) hdd[id].tracks)) - 1;
|
||||
return 1;
|
||||
@@ -418,7 +421,7 @@ retry_vhd:
|
||||
fclose(hdd_images[id].file);
|
||||
hdd_images[id].file = NULL;
|
||||
memset(hdd[id].fn, 0, sizeof(hdd[id].fn));
|
||||
return 0;
|
||||
goto fail_raw;
|
||||
}
|
||||
if (fread(&spt, 1, 4, hdd_images[id].file) != 4)
|
||||
fatal("hdd_image_load(): HDI: Error reading sectors per track\n");
|
||||
@@ -446,7 +449,7 @@ retry_vhd:
|
||||
fclose(hdd_images[id].file);
|
||||
hdd_images[id].file = NULL;
|
||||
memset(hdd[id].fn, 0, sizeof(hdd[id].fn));
|
||||
return 0;
|
||||
goto fail_raw;
|
||||
}
|
||||
if (fread(&spt, 1, 4, hdd_images[id].file) != 4)
|
||||
fatal("hdd_image_load(): HDI: Error reading sectors per track\n");
|
||||
@@ -542,7 +545,7 @@ hdd_image_read(uint8_t id, uint32_t sector, uint32_t count, uint8_t *buffer)
|
||||
|
||||
num_read = fread(buffer, 512, count, hdd_images[id].file);
|
||||
hdd_images[id].pos = sector + num_read;
|
||||
if (num_read < count)
|
||||
if ((num_read < count) && !feof(hdd_images[id].file))
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
||||
@@ -230,7 +230,7 @@ mvhd_fixed_read(MVHDMeta *vhdm, uint32_t offset, int num_sectors, void *out_buff
|
||||
addr = ((int64_t) offset) * MVHD_SECTOR_SIZE;
|
||||
if (mvhd_fseeko64(vhdm->f, addr, SEEK_SET) == -1)
|
||||
vhdm->error = 1;
|
||||
if (!fread(out_buff, transfer_sectors * MVHD_SECTOR_SIZE, 1, vhdm->f))
|
||||
if (!fread(out_buff, transfer_sectors * MVHD_SECTOR_SIZE, 1, vhdm->f) && !feof(vhdm->f))
|
||||
vhdm->error = 1;
|
||||
|
||||
return truncated_sectors;
|
||||
@@ -272,7 +272,7 @@ mvhd_sparse_read(MVHDMeta *vhdm, uint32_t offset, int num_sectors, void *out_buf
|
||||
}
|
||||
|
||||
if (VHD_TESTBIT(vhdm->bitmap.curr_bitmap, sib)) {
|
||||
if (!fread(buff, MVHD_SECTOR_SIZE, 1, vhdm->f))
|
||||
if (!fread(buff, MVHD_SECTOR_SIZE, 1, vhdm->f) && !feof(vhdm->f))
|
||||
vhdm->error = 1;
|
||||
} else {
|
||||
memset(buff, 0, MVHD_SECTOR_SIZE);
|
||||
|
||||
@@ -111,7 +111,7 @@ static const device_config_t b215_config[] = {
|
||||
// clang-format off
|
||||
{
|
||||
.name = "bios_addr",
|
||||
.description = "BIOS Address:",
|
||||
.description = "BIOS Address",
|
||||
.type = CONFIG_HEX20,
|
||||
.default_string = "",
|
||||
.default_int = 0xca000,
|
||||
|
||||
@@ -234,7 +234,7 @@ static const device_config_t monster_fdc_config[] = {
|
||||
#endif
|
||||
{
|
||||
.name = "bios_addr",
|
||||
.description = "BIOS Address:",
|
||||
.description = "BIOS Address",
|
||||
.type = CONFIG_HEX20,
|
||||
.default_string = "",
|
||||
.default_int = 0xc8000,
|
||||
|
||||
@@ -124,7 +124,7 @@ static const device_config_t pii_config[] = {
|
||||
// clang-format off
|
||||
{
|
||||
.name = "bios_addr",
|
||||
.description = "BIOS Address:",
|
||||
.description = "BIOS Address",
|
||||
.type = CONFIG_HEX20,
|
||||
.default_string = "",
|
||||
.default_int = 0xce000,
|
||||
|
||||
@@ -42,7 +42,9 @@ typedef union {
|
||||
typedef struct ibm8514_t {
|
||||
rom_t bios_rom;
|
||||
rom_t bios_rom2;
|
||||
rom_t bios_rom3;
|
||||
mem_mapping_t bios_mapping;
|
||||
uint8_t *rom1;
|
||||
uint8_t *rom2;
|
||||
hwcursor8514_t hwcursor;
|
||||
hwcursor8514_t hwcursor_latch;
|
||||
uint8_t pos_regs[8];
|
||||
@@ -213,6 +215,8 @@ typedef struct ibm8514_t {
|
||||
uint8_t subsys_cntl;
|
||||
uint8_t subsys_stat;
|
||||
|
||||
atomic_int fifo_idx;
|
||||
atomic_int ext_fifo_idx;
|
||||
atomic_int force_busy;
|
||||
atomic_int force_busy2;
|
||||
|
||||
@@ -224,9 +228,9 @@ typedef struct ibm8514_t {
|
||||
int ext_crt_pitch;
|
||||
int extensions;
|
||||
int linear;
|
||||
int _4bpp;
|
||||
uint32_t vram_amount;
|
||||
int vram_512k_8514;
|
||||
int vendor_mode;
|
||||
PALETTE _8514pal;
|
||||
|
||||
latch8514_t latch;
|
||||
|
||||
@@ -47,7 +47,8 @@ typedef struct ati_eeprom_t {
|
||||
} ati_eeprom_t;
|
||||
|
||||
void ati_eeprom_load(ati_eeprom_t *eeprom, char *fn, int type);
|
||||
void ati_eeprom_load_mach8(ati_eeprom_t *eeprom, char *fn);
|
||||
void ati_eeprom_load_mach8(ati_eeprom_t *eeprom, char *fn, int mca);
|
||||
void ati_eeprom_load_mach8_vga(ati_eeprom_t *eeprom, char *fn);
|
||||
void ati_eeprom_write(ati_eeprom_t *eeprom, int ena, int clk, int dat);
|
||||
int ati_eeprom_read(ati_eeprom_t *eeprom);
|
||||
|
||||
|
||||
@@ -79,6 +79,7 @@ typedef struct svga_t {
|
||||
uint8_t fcr;
|
||||
uint8_t hblank_overscan;
|
||||
uint8_t vidsys_ena;
|
||||
uint8_t sleep;
|
||||
|
||||
int dac_addr;
|
||||
int dac_pos;
|
||||
@@ -297,8 +298,6 @@ typedef struct svga_t {
|
||||
void * xga;
|
||||
} svga_t;
|
||||
|
||||
extern int vga_on;
|
||||
|
||||
extern void ibm8514_poll(void *priv);
|
||||
extern void ibm8514_recalctimings(svga_t *svga);
|
||||
extern uint8_t ibm8514_ramdac_in(uint16_t port, void *priv);
|
||||
@@ -313,13 +312,13 @@ extern void ibm8514_accel_out_pixtrans(svga_t *svga, uint16_t port, uint32_t
|
||||
extern void ibm8514_short_stroke_start(int count, int cpu_input, uint32_t mix_dat, uint32_t cpu_dat, svga_t *svga, uint8_t ssv, int len);
|
||||
extern void ibm8514_accel_start(int count, int cpu_input, uint32_t mix_dat, uint32_t cpu_dat, svga_t *svga, int len);
|
||||
|
||||
#ifdef ATI_8514_ULTRA
|
||||
extern void ati8514_out(uint16_t addr, uint8_t val, void *priv);
|
||||
extern uint8_t ati8514_in(uint16_t addr, void *priv);
|
||||
extern void ati8514_recalctimings(svga_t *svga);
|
||||
extern uint8_t ati8514_mca_read(int port, void *priv);
|
||||
extern void ati8514_mca_write(int port, uint8_t val, void *priv);
|
||||
extern void ati8514_pos_write(uint16_t port, uint8_t val, void *priv);
|
||||
extern void ati8514_init(svga_t *svga, void *ext8514, void *dev8514);
|
||||
#endif
|
||||
|
||||
extern void xga_write_test(uint32_t addr, uint8_t val, void *priv);
|
||||
extern uint8_t xga_read_test(uint32_t addr, void *priv);
|
||||
|
||||
40
src/ini.c
40
src/ini.c
@@ -181,7 +181,45 @@ delete_section_if_empty(list_t *head, section_t *section)
|
||||
if (section == NULL)
|
||||
return;
|
||||
|
||||
if (entries_num(section) == 0) {
|
||||
int n = entries_num(section);
|
||||
|
||||
if (n > 0) {
|
||||
int i = 0;
|
||||
entry_t *i_ent = (entry_t *) section->entry_head.next;
|
||||
|
||||
while (i_ent != NULL) {
|
||||
int i_nlen = strlen(i_ent->name);
|
||||
entry_t* i_next = (entry_t *) i_ent->list.next;
|
||||
|
||||
if (i_nlen > 0) {
|
||||
int j = 0;
|
||||
entry_t *j_ent = (entry_t *) section->entry_head.next;
|
||||
|
||||
while (j_ent != NULL) {
|
||||
int j_nlen = strlen(j_ent->name);
|
||||
entry_t* j_next = (entry_t *) j_ent->list.next;
|
||||
if (j_nlen > 0) {
|
||||
if ((j != i) && (strcmp(j_ent->name, i_ent->name) > 0)) {
|
||||
entry_t t_ent = { 0 };
|
||||
memcpy(&t_ent, j_ent, sizeof(entry_t));
|
||||
/* J: Contents of I, list of J */
|
||||
memcpy(j_ent->name, i_ent->name, sizeof(entry_t) - sizeof(i_ent->list));
|
||||
/* I: Contents of J, list of I */
|
||||
memcpy(i_ent->name, t_ent.name, sizeof(entry_t) - sizeof(i_ent->list));
|
||||
}
|
||||
|
||||
j++;
|
||||
}
|
||||
|
||||
j_ent = (entry_t *) j_next;
|
||||
}
|
||||
|
||||
i++;
|
||||
}
|
||||
|
||||
i_ent = (entry_t *) i_next;
|
||||
}
|
||||
} else {
|
||||
list_delete(§ion->list, head);
|
||||
free(section);
|
||||
}
|
||||
|
||||
@@ -110,11 +110,11 @@ static const device_config_t xi8088_config[] = {
|
||||
.type = CONFIG_SELECTION,
|
||||
.selection = {
|
||||
{
|
||||
.description = "64KB starting from 0xF0000",
|
||||
.description = "64 kB starting from F0000",
|
||||
.value = 0
|
||||
},
|
||||
{
|
||||
.description = "128KB starting from 0xE0000 (address MSB inverted, last 64KB first)",
|
||||
.description = "128 kB starting from E0000 (address MSB inverted, last 64KB first)",
|
||||
.value = 1
|
||||
}
|
||||
},
|
||||
@@ -122,37 +122,37 @@ static const device_config_t xi8088_config[] = {
|
||||
},
|
||||
{
|
||||
.name = "umb_c0000h_c7fff",
|
||||
.description = "Map 0xc0000-0xc7fff as UMB",
|
||||
.description = "Map C0000-C7FFF as UMB",
|
||||
.type = CONFIG_BINARY,
|
||||
.default_int = 0
|
||||
},
|
||||
{
|
||||
.name = "umb_c8000h_cffff",
|
||||
.description = "Map 0xc8000-0xcffff as UMB",
|
||||
.description = "Map C8000-CFFFF as UMB",
|
||||
.type = CONFIG_BINARY,
|
||||
.default_int = 0
|
||||
},
|
||||
{
|
||||
.name = "umb_d0000h_d7fff",
|
||||
.description = "Map 0xd0000-0xd7fff as UMB",
|
||||
.description = "Map D0000-D7FFF as UMB",
|
||||
.type = CONFIG_BINARY,
|
||||
.default_int = 0
|
||||
},
|
||||
{
|
||||
.name = "umb_d8000h_dffff",
|
||||
.description = "Map 0xd8000-0xdffff as UMB",
|
||||
.description = "Map D8000-DFFFF as UMB",
|
||||
.type = CONFIG_BINARY,
|
||||
.default_int = 0
|
||||
},
|
||||
{
|
||||
.name = "umb_e0000h_e7fff",
|
||||
.description = "Map 0xe0000-0xe7fff as UMB",
|
||||
.description = "Map E0000-E7FFF as UMB",
|
||||
.type = CONFIG_BINARY,
|
||||
.default_int = 0
|
||||
},
|
||||
{
|
||||
.name = "umb_e8000h_effff",
|
||||
.description = "Map 0xe8000-0xeffff as UMB",
|
||||
.description = "Map E8000-EFFFF as UMB",
|
||||
.type = CONFIG_BINARY,
|
||||
.default_int = 0
|
||||
},
|
||||
|
||||
@@ -1191,7 +1191,7 @@ static const device_config_t threec501_config[] = {
|
||||
},
|
||||
{
|
||||
.name = "dma",
|
||||
.description = "DMA channel",
|
||||
.description = "DMA",
|
||||
.type = CONFIG_SELECTION,
|
||||
.default_string = "",
|
||||
.default_int = 3,
|
||||
|
||||
@@ -720,7 +720,7 @@ static const device_config_t threec503_config[] = {
|
||||
},
|
||||
{
|
||||
.name = "bios_addr",
|
||||
.description = "BIOS address",
|
||||
.description = "BIOS Address",
|
||||
.type = CONFIG_HEX20,
|
||||
.default_string = "",
|
||||
.default_int = 0xCC000,
|
||||
|
||||
@@ -911,8 +911,10 @@ static void *
|
||||
nic_init(const device_t *info)
|
||||
{
|
||||
uint32_t mac;
|
||||
uint32_t mac_oui;
|
||||
char *rom;
|
||||
nic_t *dev;
|
||||
int set_oui = 0;
|
||||
|
||||
dev = malloc(sizeof(nic_t));
|
||||
memset(dev, 0x00, sizeof(nic_t));
|
||||
@@ -957,8 +959,8 @@ nic_init(const device_t *info)
|
||||
dev->maclocal[4] = random_generate();
|
||||
dev->maclocal[5] = random_generate();
|
||||
mac = (((int) dev->maclocal[3]) << 16);
|
||||
mac |= (((int) dev->maclocal[4]) << 8);
|
||||
mac |= ((int) dev->maclocal[5]);
|
||||
mac |= (((int) dev->maclocal[4]) << 8);
|
||||
mac |= ((int) dev->maclocal[5]);
|
||||
device_set_config_mac("mac", mac);
|
||||
} else {
|
||||
dev->maclocal[3] = (mac >> 16) & 0xff;
|
||||
@@ -987,6 +989,7 @@ nic_init(const device_t *info)
|
||||
dev->maclocal[2] = 0xB0;
|
||||
dev->is_8bit = 1;
|
||||
rom = NULL;
|
||||
set_oui = 1;
|
||||
dp8390_set_defaults(dev->dp8390, DP8390_FLAG_CHECK_CR | DP8390_FLAG_CLEAR_IRQ);
|
||||
dp8390_mem_alloc(dev->dp8390, 0x2000, 0x2000);
|
||||
break;
|
||||
@@ -1005,6 +1008,7 @@ nic_init(const device_t *info)
|
||||
dev->maclocal[1] = 0x86;
|
||||
dev->maclocal[2] = 0xB0;
|
||||
rom = ROM_PATH_NE2000;
|
||||
set_oui = 1;
|
||||
dp8390_set_defaults(dev->dp8390, DP8390_FLAG_EVEN_MAC | DP8390_FLAG_CHECK_CR | DP8390_FLAG_CLEAR_IRQ);
|
||||
dp8390_mem_alloc(dev->dp8390, 0x4000, 0x4000);
|
||||
break;
|
||||
@@ -1015,6 +1019,7 @@ nic_init(const device_t *info)
|
||||
dev->maclocal[2] = 0xB0;
|
||||
dev->is_8bit = 1;
|
||||
rom = ROM_PATH_NE2000;
|
||||
set_oui = 1;
|
||||
dp8390_set_defaults(dev->dp8390, DP8390_FLAG_EVEN_MAC | DP8390_FLAG_CHECK_CR | DP8390_FLAG_CLEAR_IRQ);
|
||||
dp8390_mem_alloc(dev->dp8390, 0x4000, 0x4000);
|
||||
break;
|
||||
@@ -1059,6 +1064,24 @@ nic_init(const device_t *info)
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
if (set_oui) {
|
||||
/* See if we have a local MAC address configured. */
|
||||
mac_oui = device_get_config_mac("mac_oui", -1);
|
||||
|
||||
/* Set up our BIA. */
|
||||
if (mac_oui & 0xff000000) {
|
||||
mac_oui = (((int) dev->maclocal[0]) << 16);
|
||||
mac_oui |= (((int) dev->maclocal[1]) << 8);
|
||||
mac_oui |= ((int) dev->maclocal[2]);
|
||||
device_set_config_mac("mac", mac);
|
||||
} else {
|
||||
dev->maclocal[0] = (mac_oui >> 16) & 0xff;
|
||||
dev->maclocal[1] = (mac_oui >> 8) & 0xff;
|
||||
dev->maclocal[2] = (mac_oui & 0xff);
|
||||
}
|
||||
}
|
||||
|
||||
memcpy(dev->dp8390->physaddr, dev->maclocal, sizeof(dev->maclocal));
|
||||
|
||||
nelog(2, "%s: I/O=%04x, IRQ=%d, MAC=%02x:%02x:%02x:%02x:%02x:%02x\n",
|
||||
@@ -1314,6 +1337,13 @@ static const device_config_t ne1000_compat_config[] = {
|
||||
.default_string = "",
|
||||
.default_int = -1
|
||||
},
|
||||
{
|
||||
.name = "mac_oui",
|
||||
.description = "MAC Address OUI",
|
||||
.type = CONFIG_MAC,
|
||||
.default_string = "",
|
||||
.default_int = -1
|
||||
},
|
||||
{ .name = "", .description = "", .type = CONFIG_END }
|
||||
};
|
||||
|
||||
@@ -1362,7 +1392,7 @@ static const device_config_t ne2000_config[] = {
|
||||
},
|
||||
{
|
||||
.name = "bios_addr",
|
||||
.description = "BIOS address",
|
||||
.description = "BIOS Address",
|
||||
.type = CONFIG_HEX20,
|
||||
.default_string = "",
|
||||
.default_int = 0,
|
||||
@@ -1440,9 +1470,16 @@ static const device_config_t ne2000_compat_config[] = {
|
||||
.default_string = "",
|
||||
.default_int = -1
|
||||
},
|
||||
{
|
||||
.name = "mac_oui",
|
||||
.description = "MAC Address OUI",
|
||||
.type = CONFIG_MAC,
|
||||
.default_string = "",
|
||||
.default_int = -1
|
||||
},
|
||||
{
|
||||
.name = "bios_addr",
|
||||
.description = "BIOS address",
|
||||
.description = "BIOS Address",
|
||||
.type = CONFIG_HEX20,
|
||||
.default_string = "",
|
||||
.default_int = 0,
|
||||
@@ -1514,9 +1551,16 @@ static const device_config_t ne2000_compat_8bit_config[] = {
|
||||
.default_string = "",
|
||||
.default_int = -1
|
||||
},
|
||||
{
|
||||
.name = "mac_oui",
|
||||
.description = "MAC Address OUI",
|
||||
.type = CONFIG_MAC,
|
||||
.default_string = "",
|
||||
.default_int = -1
|
||||
},
|
||||
{
|
||||
.name = "bios_addr",
|
||||
.description = "BIOS address",
|
||||
.description = "BIOS Address",
|
||||
.type = CONFIG_HEX20,
|
||||
.default_string = "",
|
||||
.default_int = 0,
|
||||
|
||||
@@ -3116,7 +3116,7 @@ static const device_config_t pcnet_isa_config[] = {
|
||||
},
|
||||
{
|
||||
.name = "dma",
|
||||
.description = "DMA channel",
|
||||
.description = "DMA",
|
||||
.type = CONFIG_SELECTION,
|
||||
.default_string = "",
|
||||
.default_int = 5,
|
||||
|
||||
@@ -841,7 +841,7 @@ static const device_config_t wd8003_config[] = {
|
||||
},
|
||||
{
|
||||
.name = "ram_addr",
|
||||
.description = "RAM address",
|
||||
.description = "RAM Address",
|
||||
.type = CONFIG_HEX20,
|
||||
.default_string = "",
|
||||
.default_int = 0xD0000,
|
||||
@@ -908,7 +908,7 @@ static const device_config_t wd8003eb_config[] = {
|
||||
},
|
||||
{
|
||||
.name = "ram_addr",
|
||||
.description = "RAM address",
|
||||
.description = "RAM Address",
|
||||
.type = CONFIG_HEX20,
|
||||
.default_string = "",
|
||||
.default_int = 0xD0000,
|
||||
@@ -997,7 +997,7 @@ static const device_config_t wd8013_config[] = {
|
||||
},
|
||||
{
|
||||
.name = "ram_addr",
|
||||
.description = "RAM address",
|
||||
.description = "RAM Address",
|
||||
.type = CONFIG_HEX20,
|
||||
.default_string = "",
|
||||
.default_int = 0xD0000,
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -26,3 +26,48 @@ msgstr "OpenGL (3.0 Core) renderer could not be initialised. Use another rendere
|
||||
|
||||
msgid "Development of the WinBox manager stopped in 2022 due to a lack of maintainers. As we direct our efforts towards making 86Box even better, we have made the decision to no longer support WinBox as a manager.\n\nNo further updates will be provided through WinBox, and you may encounter incorrect behavior should you continue using it with newer versions of 86Box. Any bug reports related to WinBox behavior will be closed as invalid.\n\nGo to 86box.net for a list of other managers you can use."
|
||||
msgstr "Development of the WinBox manager stopped in 2022 due to a lack of maintainers. As we direct our efforts towards making 86Box even better, we have made the decision to no longer support WinBox as a manager.\n\nNo further updates will be provided through WinBox, and you may encounter incorrect behavior should you continue using it with newer versions of 86Box. Any bug reports related to WinBox behaviour will be closed as invalid.\n\nGo to 86box.net for a list of other managers you can use."
|
||||
|
||||
msgid "Apply fullscreen stretch mode when maximized"
|
||||
msgstr "Apply fullscreen stretch mode when maximised"
|
||||
|
||||
msgid "Render behavior"
|
||||
msgstr "Render behaviour"
|
||||
|
||||
msgid "<html><head/><body><p>Render each frame immediately, in sync with the emulated display.</p><p><span style=" font-style:italic;">This is the recommended option if the shaders in use don't utilize frametime for animated effects.</span></p></body></html>"
|
||||
msgstr "<html><head/><body><p>Render each frame immediately, in sync with the emulated display.</p><p><span style=" font-style:italic;">This is the recommended option if the shaders in use don't utilise frametime for animated effects.</span></p></body></html>"
|
||||
|
||||
msgid "Synchronize with video"
|
||||
msgstr "Synchronise with video"
|
||||
|
||||
msgid "<html><head/><body><p>When selecting media images (CD-ROM, floppy, etc.) the open dialog will start in the same directory as the 86Box configuration file. This setting will likely only make a difference on macOS.</p></body></html>"
|
||||
msgstr "<html><head/><body><p>When selecting media images (CD-ROM, floppy, etc.) the open dialogue will start in the same directory as the 86Box configuration file. This setting will likely only make a difference on macOS.</p></body></html>"
|
||||
|
||||
msgid "Color (generic)"
|
||||
msgstr "Colour (generic)"
|
||||
|
||||
msgid "Gray Monochrome"
|
||||
msgstr "Grey Monochrome"
|
||||
|
||||
msgid "Color (no brown)"
|
||||
msgstr "Colour (no brown)"
|
||||
|
||||
msgid "Color (IBM 5153)"
|
||||
msgstr "Colour (IBM 5153)"
|
||||
|
||||
msgid "Color 40x25 (5153/CGA)"
|
||||
msgstr "Colour 40x25 (5153/CGA)"
|
||||
|
||||
msgid "Color 80x25 (5153/CGA)"
|
||||
msgstr "Colour 80x25 (5153/CGA)"
|
||||
|
||||
msgid "Enhanced Color - Normal Mode (5154/ECD)"
|
||||
msgstr "Enhanced Colour - Normal Mode (5154/ECD)"
|
||||
|
||||
msgid "Enhanced Color - Enhanced Mode (5154/ECD)"
|
||||
msgstr "Enhanced Colour - Enhanced Mode (5154/ECD)"
|
||||
|
||||
msgid "Gray"
|
||||
msgstr "Grey"
|
||||
|
||||
msgid "Color"
|
||||
msgstr "Colour"
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -390,8 +390,11 @@ msgstr "Dynaaminen uudelleenkääntäjä"
|
||||
msgid "Video:"
|
||||
msgstr "Näytönohjain:"
|
||||
|
||||
msgid "Voodoo Graphics"
|
||||
msgstr "Voodoo-grafiikkasuoritin"
|
||||
msgid "Video #2:"
|
||||
msgstr "Näytönohjain 2:"
|
||||
|
||||
msgid "Voodoo 1 or 2 Graphics"
|
||||
msgstr "Voodoo 1 tai 2-grafiikkasuoritin"
|
||||
|
||||
msgid "IBM 8514/A Graphics"
|
||||
msgstr "IBM 8514/A-grafiikkasuoritin"
|
||||
@@ -684,6 +687,9 @@ msgstr "Konetta \"%hs\" ei voi käyttää puuttuvien ROM-tiedostojen vuoksi. Vai
|
||||
msgid "Video card \"%hs\" is not available due to missing ROMs in the roms/video directory. Switching to an available video card."
|
||||
msgstr "Näytönohjainta \"%hs\" ei voi käyttää puuttuvien ROM-tiedostojen vuoksi. Vaihdetaan käyttökelpoiseen näytönohjaimeen."
|
||||
|
||||
msgid "Video card 2 \"%hs\" is not available due to missing ROMs in the roms/video directory. Switching to an available video card."
|
||||
msgstr "Näytönohjainta 2 \"%hs\" ei voi käyttää puuttuvien ROM-tiedostojen vuoksi. Vaihdetaan käyttökelpoiseen näytönohjaimeen."
|
||||
|
||||
msgid "Machine"
|
||||
msgstr "Tietokone"
|
||||
|
||||
@@ -762,17 +768,26 @@ msgstr "PCap-laitteita ei löytynyt"
|
||||
msgid "Invalid PCap device"
|
||||
msgstr "Virheellinen PCap-laite"
|
||||
|
||||
msgid "Standard 2-button joystick(s)"
|
||||
msgstr "Standardi 2-painikkeinen peliohjain/-ohjaimet"
|
||||
msgid "2-axis, 2-button joystick(s)"
|
||||
msgstr "2-akselinen 2-painikkeinen peliohjain/-ohjaimet"
|
||||
|
||||
msgid "Standard 4-button joystick"
|
||||
msgstr "Standardi 4-painikkeinen peliohjain"
|
||||
msgid "2-axis, 4-button joystick"
|
||||
msgstr "2-akselinen 4-painikkeinen peliohjain"
|
||||
|
||||
msgid "Standard 6-button joystick"
|
||||
msgstr "Standardi 6-painikkeinen peliohjain"
|
||||
msgid "2-axis, 6-button joystick"
|
||||
msgstr "2-akselinen 6-painikkeinen peliohjain"
|
||||
|
||||
msgid "Standard 8-button joystick"
|
||||
msgstr "Standardi 8-painikkeinen peliohjain"
|
||||
msgid "2-axis, 8-button joystick"
|
||||
msgstr "2-akselinen 8-painikkeinen peliohjain"
|
||||
|
||||
msgid "3-axis, 2-button joystick"
|
||||
msgstr "3-akselinen 2-painikkeinen peliohjain"
|
||||
|
||||
msgid "3-axis, 4-button joystick"
|
||||
msgstr "3-akselinen 4-painikkeinen peliohjain"
|
||||
|
||||
msgid "4-axis, 4-button joystick"
|
||||
msgstr "4-akselinen 4-painikkeinen peliohjain"
|
||||
|
||||
msgid "CH Flightstick Pro"
|
||||
msgstr "CH Flightstick Pro"
|
||||
@@ -807,6 +822,9 @@ msgstr "Haluatko varmasti sulkea 86Boxin?"
|
||||
msgid "Unable to initialize Ghostscript"
|
||||
msgstr "Ghostscriptin alustus epäonnistui"
|
||||
|
||||
msgid "Unable to initialize GhostPCL"
|
||||
msgstr "GhostPCLin alustus epäonnistui"
|
||||
|
||||
msgid "MO %i (%ls): %ls"
|
||||
msgstr "MO %i (%ls): %ls"
|
||||
|
||||
@@ -855,6 +873,9 @@ msgstr "Virheelliset määritykset"
|
||||
msgid "%1 is required for automatic conversion of PostScript files to PDF.\n\nAny documents sent to the generic PostScript printer will be saved as PostScript (.ps) files."
|
||||
msgstr "%1 vaaditaan PostScript-tiedostojen automaattiseen muuntamiseen PDF-tiedostoiksi.\n\nKaikki geneeriselle PostScript-tulostimelle lähetetyt asiakirjat tallennetaan PostScript (.ps) -tiedostoina."
|
||||
|
||||
msgid "%1 is required for automatic conversion of PCL files to PDF.\n\nAny documents sent to the generic PCL printer will be saved as Printer Command Language (.pcl) files."
|
||||
msgstr "%1 vaaditaan PCL-tiedostojen automaattiseen muuntamiseen PDF-tiedostoiksi.\n\nKaikki geneeriselle PCL-tulostimelle lähetetyt asiakirjat tallennetaan Printer Command Language (.ps) -tiedostoina."
|
||||
|
||||
msgid "Entering fullscreen mode"
|
||||
msgstr "Siirrytään koko näytön tilaan"
|
||||
|
||||
@@ -910,7 +931,7 @@ msgid "Error initializing renderer"
|
||||
msgstr "Virhe renderöijän alustuksessa"
|
||||
|
||||
msgid "OpenGL (3.0 Core) renderer could not be initialized. Use another renderer."
|
||||
msgstr "OpenGL (3.0 Core) -renderöijän alustus epäonnistui. Käytä toista renderöijää."
|
||||
msgstr "OpenGL (3.0 Core)-renderöijän alustus epäonnistui. Käytä toista renderöijää."
|
||||
|
||||
msgid "Resume execution"
|
||||
msgstr "Jatka suoritusta"
|
||||
@@ -999,6 +1020,27 @@ msgstr "Korvaa"
|
||||
msgid "Don't overwrite"
|
||||
msgstr "Älä korvaa"
|
||||
|
||||
msgid "Raw image"
|
||||
msgstr "Raaka levykuva"
|
||||
|
||||
msgid "HDI image"
|
||||
msgstr "HDI-levykuva"
|
||||
|
||||
msgid "HDX image"
|
||||
msgstr "HDX-levykuva"
|
||||
|
||||
msgid "Fixed-size VHD"
|
||||
msgstr "Kiinteä VHD"
|
||||
|
||||
msgid "Dynamic-size VHD"
|
||||
msgstr "Dynaaminen VHD"
|
||||
|
||||
msgid "Differencing VHD"
|
||||
msgstr "Differentiaalinen VHD"
|
||||
|
||||
msgid "(N/A)"
|
||||
msgstr "(Ei mikään)"
|
||||
|
||||
msgid "Raw image (.img)"
|
||||
msgstr "Raaka levykuva (.img)"
|
||||
|
||||
@@ -1172,3 +1214,888 @@ msgstr "WinBoxia ei enää tueta"
|
||||
|
||||
msgid "Development of the WinBox manager stopped in 2022 due to a lack of maintainers. As we direct our efforts towards making 86Box even better, we have made the decision to no longer support WinBox as a manager.\n\nNo further updates will be provided through WinBox, and you may encounter incorrect behavior should you continue using it with newer versions of 86Box. Any bug reports related to WinBox behavior will be closed as invalid.\n\nGo to 86box.net for a list of other managers you can use."
|
||||
msgstr "WinBox-managerin kehitys lopetettiin vuonna 2022, koska ylläpitäjiä ei ollut riittävästi. Koska suuntaamme ponnistuksemme 86Boxin parantamiseen entisestään, olemme päättäneet olla enää tukematta WinBoxia managerina.\n\nWinBoxin kautta ei enää toimiteta päivityksiä, ja saatat kohdata virheellistä käyttäytymistä, jos jatkat sen käyttöä 86Boxin uudemmissa versioissa. Kaikki WinBoxin käyttäytymiseen liittyvät vikailmoitukset suljetaan virheellisinä.\n\nSiirry osoitteeseen 86box.net saadaksesi luettelon muista käyttämistäsi hallintaohjelmista."
|
||||
|
||||
msgid "Generate"
|
||||
msgstr "Luo"
|
||||
|
||||
msgid "Joystick configuration"
|
||||
msgstr "Peliohjainin kokoonpano"
|
||||
|
||||
msgid "Device"
|
||||
msgstr "Laite"
|
||||
|
||||
msgid "%1 (X axis)"
|
||||
msgstr "%1 (X-akseli)"
|
||||
|
||||
msgid "%1 (Y axis)"
|
||||
msgstr "%1 (Y-akseli)"
|
||||
|
||||
msgid "MCA devices"
|
||||
msgstr "MCA-laitteet"
|
||||
|
||||
msgid "List of MCA devices:"
|
||||
msgstr "Luettelo MCA-laitteista:"
|
||||
|
||||
msgid "Tablet tool"
|
||||
msgstr "Tablettityökalu"
|
||||
|
||||
msgid "Qt (OpenGL &ES)"
|
||||
msgstr "Qt (OpenGL &ES)"
|
||||
|
||||
msgid "About Qt"
|
||||
msgstr "Tietoja Qt:sta"
|
||||
|
||||
msgid "MCA devices..."
|
||||
msgstr "MCA-laitteet..."
|
||||
|
||||
msgid "Show non-primary monitors"
|
||||
msgstr "Näytä muut kuin ensisijaiset monitorit"
|
||||
|
||||
msgid "Open screenshots folder..."
|
||||
msgstr "Avaa kuvakaappaukset-kansio..."
|
||||
|
||||
msgid "Apply fullscreen stretch mode when maximized"
|
||||
msgstr "Sovelletaan koko näytön venytystilaa maksimoidessa"
|
||||
|
||||
msgid "Cursor/Puck"
|
||||
msgstr "Kursori/Kiekko"
|
||||
|
||||
msgid "Pen"
|
||||
msgstr "Kynä"
|
||||
|
||||
msgid "Host CD/DVD Drive (%1:)"
|
||||
msgstr "Isäntä CD/DVD-asema (%1:)"
|
||||
|
||||
msgid "&Connected"
|
||||
msgstr "&Yhdistetty"
|
||||
|
||||
msgid "Clear image history"
|
||||
msgstr "Tyhjennä kuvahistoria"
|
||||
|
||||
msgid "Create..."
|
||||
msgstr "Luo..."
|
||||
|
||||
msgid "previous image"
|
||||
msgstr "edellinen levykuva"
|
||||
|
||||
msgid "Host CD/DVD Drive (%1)"
|
||||
msgstr "Isäntä CD/DVD-asema (%1)"
|
||||
|
||||
msgid "Unknown Bus"
|
||||
msgstr "Tuntematon väylä"
|
||||
|
||||
msgid "Null Driver"
|
||||
msgstr "Nolla-ajuri"
|
||||
|
||||
msgid "NIC %02i (%ls) %ls"
|
||||
msgstr "NIC %02i (%ls) %ls"
|
||||
|
||||
msgid "Error opening \"%1\": %2"
|
||||
msgstr "Virhe \"%1\" avaamisessa: %2"
|
||||
|
||||
msgid "Error compiling vertex shader in file \"%1\""
|
||||
msgstr "Virhe vertex-shaderin kääntämisessä tiedostossa \"%1\""
|
||||
|
||||
msgid "Error compiling fragment shader in file \"%1\""
|
||||
msgstr "Virhe fragmenttivarjostimen kääntämisessä tiedostossa \"%1\""
|
||||
|
||||
msgid "Error linking shader program in file \"%1\""
|
||||
msgstr "Virhe varjostinohjelman linkittämisessä tiedostoon \"%1\""
|
||||
|
||||
msgid "OpenGL 3.0 renderer options"
|
||||
msgstr "OpenGL 3.0-alustusasetukset"
|
||||
|
||||
msgid "Render behavior"
|
||||
msgstr "Renderöintikäyttäytyminen"
|
||||
|
||||
msgid "Use target framerate:"
|
||||
msgstr "Käytä kuvataajuustavoitetta:"
|
||||
|
||||
msgid " fps"
|
||||
msgstr " ruutua/s"
|
||||
|
||||
msgid "VSync"
|
||||
msgstr "VSync"
|
||||
|
||||
msgid "<html><head/><body><p>Render each frame immediately, in sync with the emulated display.</p><p><span style=" font-style:italic;">This is the recommended option if the shaders in use don't utilize frametime for animated effects.</span></p></body></html>"
|
||||
msgstr "<html><head/><body><p>Renderöi jokainen ruutu välittömästi synkronoidusti emuloidun näytön kanssa.</p><p><span style=" font-style:italic;">Tämä on suositeltava vaihtoehto, jos käytössä olevat varjostimet eivät käytä frametimeä animaatioefekteihin.</span></p></body></html>"
|
||||
|
||||
msgid "Synchronize with video"
|
||||
msgstr "Synkronisoi videoon"
|
||||
|
||||
msgid "Shaders"
|
||||
msgstr "Varjostinohjelmat"
|
||||
|
||||
msgid "Remove"
|
||||
msgstr "Poista"
|
||||
|
||||
msgid "No shader selected"
|
||||
msgstr "Ei valittu varjostinohjelmatta"
|
||||
|
||||
msgid "Browse..."
|
||||
msgstr "Selaa..."
|
||||
|
||||
msgid "Shader error"
|
||||
msgstr "Varjostinohjelmatvirhe"
|
||||
|
||||
msgid "Could not load shaders."
|
||||
msgstr "Varjostinohjelmateita ei voitu ladata."
|
||||
|
||||
msgid "More information in details."
|
||||
msgstr "Lisätietoja yksityiskohtaisesti."
|
||||
|
||||
msgid "Couldn't create OpenGL context."
|
||||
msgstr "OpenGL-kontekstia ei voitu luoda."
|
||||
|
||||
msgid "Couldn't switch to OpenGL context."
|
||||
msgstr "Ei voitu siirtyä OpenGL-kontekstiin."
|
||||
|
||||
msgid "OpenGL version 3.0 or greater is required. Current version is %1.%2"
|
||||
msgstr "Tarvitaan OpenGL-versio 3.0 tai uudempi. Nykyinen versio on %1.%2"
|
||||
|
||||
msgid "OpenGL initialization failed. Error %1."
|
||||
msgstr "OpenGL:n alustaminen epäonnistui. Virhe %1."
|
||||
|
||||
msgid "Error initializing OpenGL"
|
||||
msgstr "Virhe OpenGL:n alustamisessa"
|
||||
|
||||
msgid "Falling back to software rendering.\n"
|
||||
msgstr "Paluu ohjelmistoalustusöintiin.\n"
|
||||
|
||||
msgid "Allocating memory for unpack buffer failed.\n"
|
||||
msgstr "Pakkauspuskurin muistin varaaminen epäonnistui.\n"
|
||||
|
||||
msgid "<html><head/><body><p>When selecting media images (CD-ROM, floppy, etc.) the open dialog will start in the same directory as the 86Box configuration file. This setting will likely only make a difference on macOS.</p></body></html>"
|
||||
msgstr "<html><head/><body><p>Kun valitset mediakuvia (CD-ROM, levykkeet jne.), avausikkuna käynnistyy samaan hakemistoon kuin 86Boxin konfigurointitiedosto. Tällä asetuksella on todennäköisesti merkitystä vain macOS-käyttöjärjestelmässä.</p></body></html>"
|
||||
|
||||
msgid "This machine might have been moved or copied."
|
||||
msgstr "Kone on saatettu siirtää tai kopioida."
|
||||
|
||||
msgid "In order to ensure proper networking functionality, 86Box needs to know if this machine was moved or copied.\n\nSelect \"I Copied It\" if you are not sure."
|
||||
msgstr "Varmistaakseen asianmukaisen verkkotoiminnon 86Boxin on tiedettävä, onko tämä kone siirretty vai kopioitu.\n\nValitse \"Kopioin sen\", jos et ole varma."
|
||||
|
||||
msgid "I Moved It"
|
||||
msgstr "Siirsin sen"
|
||||
|
||||
msgid "I Copied It"
|
||||
msgstr "Kopioin sen"
|
||||
|
||||
msgid "86Box Monitor #"
|
||||
msgstr "86Box Monitor "
|
||||
|
||||
msgid "No MCA devices."
|
||||
msgstr "Ei MCA-laitteita."
|
||||
|
||||
msgid "MiB"
|
||||
msgstr "Mit"
|
||||
|
||||
msgid "Network Card #1"
|
||||
msgstr "Verkkokortti 1"
|
||||
|
||||
msgid "Network Card #2"
|
||||
msgstr "Verkkokortti 2"
|
||||
|
||||
msgid "Network Card #3"
|
||||
msgstr "Verkkokortti 3"
|
||||
|
||||
msgid "Network Card #4"
|
||||
msgstr "Verkkokortti 4"
|
||||
|
||||
msgid "Mode"
|
||||
msgstr "Tila"
|
||||
|
||||
msgid "Interface"
|
||||
msgstr "Liitäntä"
|
||||
|
||||
msgid "Adapter"
|
||||
msgstr "Sovitin"
|
||||
|
||||
msgid "VDE Socket"
|
||||
msgstr "VDE-pistorasia"
|
||||
|
||||
msgid "86Box Unit Tester"
|
||||
msgstr "86Box Unit Tester"
|
||||
|
||||
msgid "Novell NetWare 2.x Key Card"
|
||||
msgstr "Novell NetWare 2.x -avainkortti"
|
||||
|
||||
msgid "Serial port passthrough 1"
|
||||
msgstr "Sarjaportin läpivienti 1"
|
||||
|
||||
msgid "Serial port passthrough 2"
|
||||
msgstr "Sarjaportin läpivienti 2"
|
||||
|
||||
msgid "Serial port passthrough 3"
|
||||
msgstr "Sarjaportin läpivienti 3"
|
||||
|
||||
msgid "Serial port passthrough 4"
|
||||
msgstr "Sarjaportin läpivienti 4"
|
||||
|
||||
msgid "Vision Systems LBA Enhancer"
|
||||
msgstr "Vision Systems LBA Enhancer"
|
||||
|
||||
msgid "Renderer options..."
|
||||
msgstr "Alustusasetukset..."
|
||||
|
||||
msgid "Logitech/Microsoft Bus Mouse"
|
||||
msgstr "Logitech/Microsoft-väylähiiri"
|
||||
|
||||
msgid "Microsoft Bus Mouse (InPort)"
|
||||
msgstr "Microsoft-väylähiiri (InPort)"
|
||||
|
||||
msgid "Mouse Systems Serial Mouse"
|
||||
msgstr "Mouse Systems-sarjahiiri"
|
||||
|
||||
msgid "Microsoft Serial Mouse"
|
||||
msgstr "Microsoft-sarjahiiri"
|
||||
|
||||
msgid "Logitech Serial Mouse"
|
||||
msgstr "Logitech-sarjahiiri"
|
||||
|
||||
msgid "PS/2 Mouse"
|
||||
msgstr "PS/2 hiiri"
|
||||
|
||||
msgid "3M MicroTouch (Serial)"
|
||||
msgstr "3M MicroTouch (sarja)"
|
||||
|
||||
msgid "[COM] Standard Hayes-compliant Modem"
|
||||
msgstr "[COM] Tavallinen Hayes-yhteensopiva modeemi"
|
||||
|
||||
msgid "Roland MT-32 Emulation"
|
||||
msgstr "Roland MT-32-emulointi"
|
||||
|
||||
msgid "Roland MT-32 (New) Emulation"
|
||||
msgstr "Roland MT-32 (uusi)-emulointi"
|
||||
|
||||
msgid "Roland CM-32L Emulation"
|
||||
msgstr "Roland CM-32L-emulointi"
|
||||
|
||||
msgid "Roland CM-32LN Emulation"
|
||||
msgstr "Roland CM-32LN-emulointi"
|
||||
|
||||
msgid "OPL4-ML Daughterboard"
|
||||
msgstr "OPL4-ML-tytärlevy"
|
||||
|
||||
msgid "System MIDI"
|
||||
msgstr "Järjestelmän MIDI"
|
||||
|
||||
msgid "MIDI Input Device"
|
||||
msgstr "MIDI-syöttölaite"
|
||||
|
||||
msgid "BIOS Address"
|
||||
msgstr "BIOS-osoite"
|
||||
|
||||
msgid "Enable BIOS extension ROM Writes"
|
||||
msgstr "Käytä BIOS-laajennuksen ROM-kirjoitusten"
|
||||
|
||||
msgid "Address"
|
||||
msgstr "Osoite"
|
||||
|
||||
msgid "IRQ"
|
||||
msgstr "IRQ"
|
||||
|
||||
msgid "BIOS Revision"
|
||||
msgstr "BIOS-tarkistus"
|
||||
|
||||
msgid "Translate 26 -> 17"
|
||||
msgstr "Käännä 26 -> 17"
|
||||
|
||||
msgid "Language"
|
||||
msgstr "Kieli"
|
||||
|
||||
msgid "Enable backlight"
|
||||
msgstr "Käytä taustavalota"
|
||||
|
||||
msgid "Invert colors"
|
||||
msgstr "Käännä värit"
|
||||
|
||||
msgid "BIOS size"
|
||||
msgstr "BIOS-koko"
|
||||
|
||||
msgid "Map C0000-C7FFF as UMB"
|
||||
msgstr "Kartta C0000-C7FFF UMB:nä"
|
||||
|
||||
msgid "Map C8000-CFFFF as UMB"
|
||||
msgstr "Kartta C8000-CFFFF UMB:nä"
|
||||
|
||||
msgid "Map D0000-D7FFF as UMB"
|
||||
msgstr "Kartta D0000-D7FFF UMB:nä"
|
||||
|
||||
msgid "Map D8000-DFFFF as UMB"
|
||||
msgstr "Kartta D8000-DFFFF UMB:nä"
|
||||
|
||||
msgid "Map E0000-E7FFF as UMB"
|
||||
msgstr "Kartta E0000-E7FFF UMB:nä"
|
||||
|
||||
msgid "Map E8000-EFFFF as UMB"
|
||||
msgstr "Kartta E8000-EFFFF UMB:nä"
|
||||
|
||||
msgid "JS9 Jumper (JIM)"
|
||||
msgstr "JS9 Jumpperi (JIM)"
|
||||
|
||||
msgid "MIDI Output Device"
|
||||
msgstr "MIDI-lähtölaite"
|
||||
|
||||
msgid "MIDI Real time"
|
||||
msgstr "MIDI reaaliajassa"
|
||||
|
||||
msgid "MIDI Thru"
|
||||
msgstr "MIDI-tulon läpivienti"
|
||||
|
||||
msgid "MIDI Clockout"
|
||||
msgstr "MIDI-kellon ulostulo"
|
||||
|
||||
msgid "SoundFont"
|
||||
msgstr "SoundFont"
|
||||
|
||||
msgid "Output Gain"
|
||||
msgstr "Lähtötaso"
|
||||
|
||||
msgid "Chorus"
|
||||
msgstr "Kuoro"
|
||||
|
||||
msgid "Chorus Voices"
|
||||
msgstr "Kuoron äänet"
|
||||
|
||||
msgid "Chorus Level"
|
||||
msgstr "Kuorotaso"
|
||||
|
||||
msgid "Chorus Speed"
|
||||
msgstr "Kuronopeus"
|
||||
|
||||
msgid "Chorus Depth"
|
||||
msgstr "Kuorosyvyys"
|
||||
|
||||
msgid "Chorus Waveform"
|
||||
msgstr "Kuoroaaltomuoto"
|
||||
|
||||
msgid "Reverb"
|
||||
msgstr "Jälkikaiunta"
|
||||
|
||||
msgid "Reverb Room Size"
|
||||
msgstr "Jälkikaiuntahuoneen koko"
|
||||
|
||||
msgid "Reverb Damping"
|
||||
msgstr "Jälkikaiunta vaimennus"
|
||||
|
||||
msgid "Reverb Width"
|
||||
msgstr "Jälkikaiunnan leveys"
|
||||
|
||||
msgid "Reverb Level"
|
||||
msgstr "Jälkikaiunnan taso"
|
||||
|
||||
msgid "Interpolation Method"
|
||||
msgstr "Interpolointimenetelmä"
|
||||
|
||||
msgid "Reverb Output Gain"
|
||||
msgstr "Jälkikaiunta lähtötaso"
|
||||
|
||||
msgid "Reversed stereo"
|
||||
msgstr "Käänteinen stereo"
|
||||
|
||||
msgid "Nice ramp"
|
||||
msgstr "Hieno ramppi"
|
||||
|
||||
msgid "Hz"
|
||||
msgstr "Hz"
|
||||
|
||||
msgid "Buttons"
|
||||
msgstr "Painikkeet"
|
||||
|
||||
msgid "Serial Port"
|
||||
msgstr "Sarjaportti"
|
||||
|
||||
msgid "RTS toggle"
|
||||
msgstr "RTS-vaihtokytkin"
|
||||
|
||||
msgid "Revision"
|
||||
msgstr "Tarkistus"
|
||||
|
||||
msgid "Controller"
|
||||
msgstr "Ohjain"
|
||||
|
||||
msgid "Show Crosshair"
|
||||
msgstr "Näytä ristikko"
|
||||
|
||||
msgid "DMA"
|
||||
msgstr "DMA"
|
||||
|
||||
msgid "MAC Address"
|
||||
msgstr "MAC-osoite"
|
||||
|
||||
msgid "MAC Address OUI"
|
||||
msgstr "MAC-osoitteen OUI"
|
||||
|
||||
msgid "Enable BIOS"
|
||||
msgstr "Käytä BIOS:ta"
|
||||
|
||||
msgid "Baud Rate"
|
||||
msgstr "Baudinopeus"
|
||||
|
||||
msgid "TCP/IP listening port"
|
||||
msgstr "TCP/IP-kuunteluportti"
|
||||
|
||||
msgid "Phonebook File"
|
||||
msgstr "Puhelinluettelotiedosto"
|
||||
|
||||
msgid "Telnet emulation"
|
||||
msgstr "Telnet-emulointi"
|
||||
|
||||
msgid "RAM Address"
|
||||
msgstr "RAM-osoite"
|
||||
|
||||
msgid "RAM size"
|
||||
msgstr "RAM-koko"
|
||||
|
||||
msgid "Initial RAM size"
|
||||
msgstr "Alkuperäinen RAM-koko"
|
||||
|
||||
msgid "Serial Number"
|
||||
msgstr "Sarjanumero"
|
||||
|
||||
msgid "Host ID"
|
||||
msgstr "Isännän ID"
|
||||
|
||||
msgid "FDC Address"
|
||||
msgstr "FDC-osoite"
|
||||
|
||||
msgid "MPU-401 Address"
|
||||
msgstr "MPU-401-osoite"
|
||||
|
||||
msgid "MPU-401 IRQ"
|
||||
msgstr "MPU-401-IRQ"
|
||||
|
||||
msgid "Receive MIDI input"
|
||||
msgstr "Vastaanota MIDI-tulo"
|
||||
|
||||
msgid "Low DMA"
|
||||
msgstr "Matala DMA"
|
||||
|
||||
msgid "Enable Game port"
|
||||
msgstr "Käytä peliporttita"
|
||||
|
||||
msgid "Surround module"
|
||||
msgstr "Surround-moduuli"
|
||||
|
||||
msgid "CODEC"
|
||||
msgstr "CODEC"
|
||||
|
||||
msgid "Raise CODEC interrupt on CODEC setup (needed by some drivers)"
|
||||
msgstr "CODEC-keskeytyksen nostaminen CODEC-asennuksen yhteydessä (jotkut ohjaimet tarvitsevat sitä)"
|
||||
|
||||
msgid "SB Address"
|
||||
msgstr "SB-osoite"
|
||||
|
||||
msgid "WSS IRQ"
|
||||
msgstr "WSS-IRQ"
|
||||
|
||||
msgid "WSS DMA"
|
||||
msgstr "WSS-DMA"
|
||||
|
||||
msgid "Enable OPL"
|
||||
msgstr "Käytä OPL:ta"
|
||||
|
||||
msgid "Receive MIDI input (MPU-401)"
|
||||
msgstr "Vastaanota MIDI-tulo (MPU-401)"
|
||||
|
||||
msgid "SB low DMA"
|
||||
msgstr "Matala SB-DMA"
|
||||
|
||||
msgid "6CH variant (6-channel)"
|
||||
msgstr "6CH-muunnos (6-kanavainen)"
|
||||
|
||||
msgid "Enable CMS"
|
||||
msgstr "Käytä CMS:ta"
|
||||
|
||||
msgid "Mixer"
|
||||
msgstr "Mikseri"
|
||||
|
||||
msgid "High DMA"
|
||||
msgstr "Korkea DMA"
|
||||
|
||||
msgid "Control PC speaker"
|
||||
msgstr "Ohjaus PC-kaiutin"
|
||||
|
||||
msgid "Memory size"
|
||||
msgstr "Muistin koko"
|
||||
|
||||
msgid "EMU8000 Address"
|
||||
msgstr "EMU8000-osoite"
|
||||
|
||||
msgid "IDE Controller"
|
||||
msgstr "IDE-ohjain"
|
||||
|
||||
msgid "Codec"
|
||||
msgstr "Codec"
|
||||
|
||||
msgid "GUS type"
|
||||
msgstr "GUS-tyyppi"
|
||||
|
||||
msgid "Enable 0x04 \"Exit 86Box\" command"
|
||||
msgstr "Käytä komentota 0x04 \"Poistuminen 86Box\""
|
||||
|
||||
msgid "Display type"
|
||||
msgstr "Näytön tyyppi"
|
||||
|
||||
msgid "Composite type"
|
||||
msgstr "Komposiittityyppi"
|
||||
|
||||
msgid "RGB type"
|
||||
msgstr "RGB-tyyppi"
|
||||
|
||||
msgid "Line doubling type"
|
||||
msgstr "Linjan kaksinkertaistamistyyppi"
|
||||
|
||||
msgid "Snow emulation"
|
||||
msgstr "Lumi-emulointi"
|
||||
|
||||
msgid "Monitor type"
|
||||
msgstr "Monitorityyppi"
|
||||
|
||||
msgid "Character set"
|
||||
msgstr "Merkistö"
|
||||
|
||||
msgid "XGA type"
|
||||
msgstr "XGA-tyyppi"
|
||||
|
||||
msgid "Instance"
|
||||
msgstr "Instanssi"
|
||||
|
||||
msgid "MMIO Address"
|
||||
msgstr "MMIO-osoite"
|
||||
|
||||
msgid "RAMDAC type"
|
||||
msgstr "RAMDAC-tyyppi"
|
||||
|
||||
msgid "Blend"
|
||||
msgstr "Sekoitus"
|
||||
|
||||
msgid "Bilinear filtering"
|
||||
msgstr "Bilineaarinen suodatus"
|
||||
|
||||
msgid "Dithering"
|
||||
msgstr "Dithering"
|
||||
|
||||
msgid "Enable NMI for CGA emulation"
|
||||
msgstr "Käytä NMI:ta CGA-emulointia varten"
|
||||
|
||||
msgid "Voodoo type"
|
||||
msgstr "Voodoo-tyyppi"
|
||||
|
||||
msgid "Framebuffer memory size"
|
||||
msgstr "Kehyspuskurin muistin koko"
|
||||
|
||||
msgid "Texture memory size"
|
||||
msgstr "Tekstuurimuistin koko"
|
||||
|
||||
msgid "Dither subtraction"
|
||||
msgstr "Ditherin vähennys"
|
||||
|
||||
msgid "Screen Filter"
|
||||
msgstr "Seulasuodatin"
|
||||
|
||||
msgid "Render threads"
|
||||
msgstr "Renderöintisäikeet"
|
||||
|
||||
msgid "SLI"
|
||||
msgstr "SLI"
|
||||
|
||||
msgid "Start Address"
|
||||
msgstr "Aloitusosoite"
|
||||
|
||||
msgid "Contiguous Size"
|
||||
msgstr "Vierekkäinen koko"
|
||||
|
||||
msgid "I/O Width"
|
||||
msgstr "I/O-leveys"
|
||||
|
||||
msgid "Transfer Speed"
|
||||
msgstr "Siirtonopeus"
|
||||
|
||||
msgid "EMS mode"
|
||||
msgstr "EMS-tila"
|
||||
|
||||
msgid "Address for > 2 MB"
|
||||
msgstr "Osoite > 2 Mt"
|
||||
|
||||
msgid "Frame Address"
|
||||
msgstr "Kehyksen osoite"
|
||||
|
||||
msgid "USA"
|
||||
msgstr "USA"
|
||||
|
||||
msgid "Danish"
|
||||
msgstr "Tanskalainen"
|
||||
|
||||
msgid "Always at selected speed"
|
||||
msgstr "Aina valitulla nopeudella"
|
||||
|
||||
msgid "BIOS setting + Hotkeys (off during POST)"
|
||||
msgstr "BIOS-asetus + pikanäppäimet (pois päältä POSTin aikana)"
|
||||
|
||||
msgid "64 kB starting from F0000"
|
||||
msgstr "64 kB alkaen F0000:sta"
|
||||
|
||||
msgid "128 kB starting from E0000 (address MSB inverted, last 64KB first)"
|
||||
msgstr "128 kB alkaen E0000:sta (osoitteen käänteinen MSB, viimeiset 64 kB ensin)"
|
||||
|
||||
msgid "Sine"
|
||||
msgstr "Sinus"
|
||||
|
||||
msgid "Triangle"
|
||||
msgstr "Kolmio"
|
||||
|
||||
msgid "Linear"
|
||||
msgstr "Lineaarinen"
|
||||
|
||||
msgid "4th Order"
|
||||
msgstr "4. tilaus"
|
||||
|
||||
msgid "7th Order"
|
||||
msgstr "7. tilaus"
|
||||
|
||||
msgid "Non-timed (original)"
|
||||
msgstr "Ajastamaton (alkuperäinen)"
|
||||
|
||||
msgid "45 Hz (JMP2 not populated)"
|
||||
msgstr "45 Hz (JMP2 ei käytössä)"
|
||||
|
||||
msgid "Two"
|
||||
msgstr "Kaksi"
|
||||
|
||||
msgid "Three"
|
||||
msgstr "Kolme"
|
||||
|
||||
msgid "Wheel"
|
||||
msgstr "Pyörä"
|
||||
|
||||
msgid "Five + Wheel"
|
||||
msgstr "Viisi + pyörä"
|
||||
|
||||
msgid "A3 - SMT2 Serial / SMT3(R)V"
|
||||
msgstr "A3 - SMT2 sarja / SMT3(R)V"
|
||||
|
||||
msgid "Q1 - SMT3(R) Serial"
|
||||
msgstr "Q1 - SMT3(R) sarja"
|
||||
|
||||
msgid "8 kB"
|
||||
msgstr "8 kt"
|
||||
|
||||
msgid "32 kB"
|
||||
msgstr "32 kt"
|
||||
|
||||
msgid "16 kB"
|
||||
msgstr "16 kt"
|
||||
|
||||
msgid "64 kB"
|
||||
msgstr "64 kt"
|
||||
|
||||
msgid "Disable BIOS"
|
||||
msgstr "BIOS pois käytöstä"
|
||||
|
||||
msgid "512 kB"
|
||||
msgstr "512 kt"
|
||||
|
||||
msgid "2 MB"
|
||||
msgstr "2 Mt"
|
||||
|
||||
msgid "8 MB"
|
||||
msgstr " 8 Mt"
|
||||
|
||||
msgid "28 MB"
|
||||
msgstr "28 Mt"
|
||||
|
||||
msgid "1 MB"
|
||||
msgstr "1 Mt"
|
||||
|
||||
msgid "4 MB"
|
||||
msgstr "4 Mt"
|
||||
|
||||
msgid "12 MB"
|
||||
msgstr "12 Mt"
|
||||
|
||||
msgid "16 MB"
|
||||
msgstr "16 Mt"
|
||||
|
||||
msgid "20 MB"
|
||||
msgstr "20 Mt"
|
||||
|
||||
msgid "24 MB"
|
||||
msgstr "24 Mt"
|
||||
|
||||
msgid "SigmaTel STAC9721T (stereo)"
|
||||
msgstr "SigmaTel STAC9721T (stereo)"
|
||||
|
||||
msgid "Classic"
|
||||
msgstr "Klassinen"
|
||||
|
||||
msgid "256 kB"
|
||||
msgstr "256 kt"
|
||||
|
||||
msgid "Composite"
|
||||
msgstr "Komposiitti"
|
||||
|
||||
msgid "Old"
|
||||
msgstr "Vanha"
|
||||
|
||||
msgid "New"
|
||||
msgstr "Uusi"
|
||||
|
||||
msgid "Color (generic)"
|
||||
msgstr "Väri (yleinen)"
|
||||
|
||||
msgid "Green Monochrome"
|
||||
msgstr "Vihreä yksivärinen"
|
||||
|
||||
msgid "Amber Monochrome"
|
||||
msgstr "Keltainen yksivärinen"
|
||||
|
||||
msgid "Gray Monochrome"
|
||||
msgstr "Harmaa yksivärinen"
|
||||
|
||||
msgid "Color (no brown)"
|
||||
msgstr "Väri (ei ruskea)"
|
||||
|
||||
msgid "Color (IBM 5153)"
|
||||
msgstr "Väri (IBM 5153)"
|
||||
|
||||
msgid "Simple doubling"
|
||||
msgstr "Yksinkertainen kaksinkertaistaminen"
|
||||
|
||||
msgid "sRGB interpolation"
|
||||
msgstr "sRGB-interpolointi"
|
||||
|
||||
msgid "Linear interpolation"
|
||||
msgstr "Lineaarinen interpolointi"
|
||||
|
||||
msgid "128 kB"
|
||||
msgstr "128 kt"
|
||||
|
||||
msgid "Monochrome (5151/MDA) (white)"
|
||||
msgstr "Yksivärinen (5151/MDA) (valkoinen)"
|
||||
|
||||
msgid "Monochrome (5151/MDA) (green)"
|
||||
msgstr "Yksivärinen (5151/MDA) (vihreä)"
|
||||
|
||||
msgid "Monochrome (5151/MDA) (amber)"
|
||||
msgstr "Yksivärinen (5151/MDA) (keltainen)"
|
||||
|
||||
msgid "Color 40x25 (5153/CGA)"
|
||||
msgstr "Väri 40x25 (5153/CGA)"
|
||||
|
||||
msgid "Color 80x25 (5153/CGA)"
|
||||
msgstr "Väri 80x25 (5153/CGA)"
|
||||
|
||||
msgid "Enhanced Color - Normal Mode (5154/ECD)"
|
||||
msgstr "Parannettu väri - Normaali tila (5154/ECD)"
|
||||
|
||||
msgid "Enhanced Color - Enhanced Mode (5154/ECD)"
|
||||
msgstr "Parannettu väri - Parannettu tila (5154/ECD)"
|
||||
|
||||
msgid "Green"
|
||||
msgstr "Vihreä"
|
||||
|
||||
msgid "Amber"
|
||||
msgstr "Keltainen"
|
||||
|
||||
msgid "Gray"
|
||||
msgstr "Harmaa"
|
||||
|
||||
msgid "Color"
|
||||
msgstr "Väri"
|
||||
|
||||
msgid "U.S. English"
|
||||
msgstr "Yhdysvaltain englanti"
|
||||
|
||||
msgid "Scandinavian"
|
||||
msgstr "Skandinaavinen"
|
||||
|
||||
msgid "Other languages"
|
||||
msgstr "Muut kielet"
|
||||
|
||||
msgid "Bochs latest"
|
||||
msgstr "Bochs uusin"
|
||||
|
||||
msgid "Mono Non-Interlaced"
|
||||
msgstr "Yksivärinen ei-välitetyt"
|
||||
|
||||
msgid "Color Interlaced"
|
||||
msgstr "Väri välitetyt"
|
||||
|
||||
msgid "Color Non-Interlaced"
|
||||
msgstr "Väri ei-välitetyt"
|
||||
|
||||
msgid "3Dfx Voodoo Graphics"
|
||||
msgstr "3dfx Voodoo-grafiikkasuoritin"
|
||||
|
||||
msgid "Obsidian SB50 + Amethyst (2 TMUs)"
|
||||
msgstr "Obsidian SB50 + Amethyst (2 TMU:ta)"
|
||||
|
||||
msgid "8-bit"
|
||||
msgstr "8-bittinen"
|
||||
|
||||
msgid "16-bit"
|
||||
msgstr "16-bittinen"
|
||||
|
||||
msgid "Standard (150ns)"
|
||||
msgstr "Vakio (150ns)"
|
||||
|
||||
msgid "High-Speed (120ns)"
|
||||
msgstr "Nopea (120ns)"
|
||||
|
||||
msgid "Enabled"
|
||||
msgstr "Käytössä"
|
||||
|
||||
msgid "Standard"
|
||||
msgstr "Vakio"
|
||||
|
||||
msgid "High-Speed"
|
||||
msgstr "Nopea"
|
||||
|
||||
msgid "Stereo LPT DAC"
|
||||
msgstr "Stereo-LPT-DAC"
|
||||
|
||||
msgid "Generic Text Printer"
|
||||
msgstr "Yleinen tekstitulostin"
|
||||
|
||||
msgid "Generic ESC/P Dot-Matrix"
|
||||
msgstr "Yleinen ESC/P pistematriisi"
|
||||
|
||||
msgid "Generic PostScript Printer"
|
||||
msgstr "Yleinen PostScript-tulostin"
|
||||
|
||||
msgid "Generic PCL5e Printer"
|
||||
msgstr "Yleinen PCL5e-tulostin"
|
||||
|
||||
msgid "Parallel Line Internet Protocol"
|
||||
msgstr "Rinnakkaislinjan Internet-protokolla"
|
||||
|
||||
msgid "Protection Dongle for Savage Quest"
|
||||
msgstr "Savage Questin suojausdongle"
|
||||
|
||||
msgid "Serial Passthrough Device"
|
||||
msgstr "Sarjaportin läpivientilaite"
|
||||
|
||||
msgid "Passthrough Mode"
|
||||
msgstr "Läpivientitila"
|
||||
|
||||
msgid "Host Serial Device"
|
||||
msgstr "Isäntäkoneen sarjalaiten"
|
||||
|
||||
msgid "Name of pipe"
|
||||
msgstr "Putken nimi"
|
||||
|
||||
msgid "Data bits"
|
||||
msgstr "Databitit"
|
||||
|
||||
msgid "Stop bits"
|
||||
msgstr "Pysäytysbitit"
|
||||
|
||||
msgid "Baud Rate of Passthrough"
|
||||
msgstr "Läpiviennin baudinopeus"
|
||||
|
||||
msgid "Named Pipe (Server)"
|
||||
msgstr "Nimetty putki (palvelin)"
|
||||
|
||||
msgid "Host Serial Passthrough"
|
||||
msgstr "Isännän sarjaportin läpivienti"
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -13,7 +13,7 @@ msgid "&Keyboard requires capture"
|
||||
msgstr "Bàn phím &hoạt động cần capture chuột"
|
||||
|
||||
msgid "&Right CTRL is left ALT"
|
||||
msgstr "Gắn CTRL p&hải vào ALT trái"
|
||||
msgstr "Gắn ALT trái vào CTRL ph&ải"
|
||||
|
||||
msgid "&Hard Reset..."
|
||||
msgstr "Buộc khởi độn&g lại"
|
||||
@@ -39,6 +39,9 @@ msgstr "Ẩn tha&nh trạng thái"
|
||||
msgid "Hide &toolbar"
|
||||
msgstr "Ẩn thanh &công cụ"
|
||||
|
||||
msgid "Show non-primary monitors"
|
||||
msgstr "Hiển thị các màn hình phụ"
|
||||
|
||||
msgid "&Resizeable window"
|
||||
msgstr "Tùy chỉnh cỡ cử&a sổ"
|
||||
|
||||
@@ -66,6 +69,9 @@ msgstr "Tự nhập độ &phân giải..."
|
||||
msgid "F&orce 4:3 display ratio"
|
||||
msgstr "Giữ n&guyên khung hình 4:3"
|
||||
|
||||
msgid "Apply fullscreen stretch mode when maximized"
|
||||
msgstr "Co giãn toàn màn hình khi cực đại hóa cửa sổ"
|
||||
|
||||
msgid "&Window scale factor"
|
||||
msgstr "Đổi &tỷ lệ cửa sổ"
|
||||
|
||||
@@ -198,6 +204,9 @@ msgstr "Bật trình trạng thái cho Discord"
|
||||
msgid "Sound &gain..."
|
||||
msgstr "Bộ &tăng âm..."
|
||||
|
||||
msgid "Open screenshots folder..."
|
||||
msgstr "Mở thư mục ảnh chụp màn hình..."
|
||||
|
||||
msgid "Begin trace\tCtrl+T"
|
||||
msgstr "Bắt đầu dò\tCtrl+T"
|
||||
|
||||
@@ -657,6 +666,9 @@ msgstr "86Box không tìm được bản ROM nào.\n\nVui lòng <a href=\"https:
|
||||
msgid "(empty)"
|
||||
msgstr "(trống trơn)"
|
||||
|
||||
msgid "Clear image history"
|
||||
msgstr "Xóa lịch sử ảnh đĩa"
|
||||
|
||||
msgid "All files"
|
||||
msgstr "Tất cả file"
|
||||
|
||||
@@ -718,7 +730,7 @@ msgid "Other peripherals"
|
||||
msgstr "Thiết bị ngoại vi khác"
|
||||
|
||||
msgid "Click to capture mouse"
|
||||
msgstr "Bấm để capture ('nhốt') chuột vào"
|
||||
msgstr "Nhấp vào khung hình để 'nhốt' chuột vào"
|
||||
|
||||
msgid "Press %1 to release mouse"
|
||||
msgstr "Nhấn %1 để thả chuột"
|
||||
|
||||
@@ -124,7 +124,7 @@ DeviceConfig::ProcessConfig(void *dc, const void *c, const bool is_dep)
|
||||
return;
|
||||
|
||||
while (config->type != -1) {
|
||||
const int config_type = config->type & CONFIG_TYPE_MASK;
|
||||
const int config_type = config->type & CONFIG_TYPE_MASK;
|
||||
|
||||
/* Ignore options of the wrong class. */
|
||||
if (!!(config->type & CONFIG_DEP) != is_dep)
|
||||
@@ -168,7 +168,7 @@ DeviceConfig::ProcessConfig(void *dc, const void *c, const bool is_dep)
|
||||
auto *cbox = new QCheckBox();
|
||||
cbox->setObjectName(config->name);
|
||||
cbox->setChecked(value > 0);
|
||||
this->ui->formLayout->addRow(config->description, cbox);
|
||||
this->ui->formLayout->addRow(tr(config->description), cbox);
|
||||
break;
|
||||
}
|
||||
#ifdef USE_RTMIDI
|
||||
@@ -187,7 +187,7 @@ DeviceConfig::ProcessConfig(void *dc, const void *c, const bool is_dep)
|
||||
if (i == value)
|
||||
currentIndex = i;
|
||||
}
|
||||
this->ui->formLayout->addRow(config->description, cbox);
|
||||
this->ui->formLayout->addRow(tr(config->description), cbox);
|
||||
cbox->setCurrentIndex(currentIndex);
|
||||
break;
|
||||
}
|
||||
@@ -206,7 +206,7 @@ DeviceConfig::ProcessConfig(void *dc, const void *c, const bool is_dep)
|
||||
if (i == value)
|
||||
currentIndex = i;
|
||||
}
|
||||
this->ui->formLayout->addRow(config->description, cbox);
|
||||
this->ui->formLayout->addRow(tr(config->description), cbox);
|
||||
cbox->setCurrentIndex(currentIndex);
|
||||
break;
|
||||
}
|
||||
@@ -224,12 +224,12 @@ DeviceConfig::ProcessConfig(void *dc, const void *c, const bool is_dep)
|
||||
|
||||
for (auto *sel = config->selection; (sel != nullptr) && (sel->description != nullptr) &&
|
||||
(strlen(sel->description) > 0); ++sel) {
|
||||
int row = Models::AddEntry(model, sel->description, sel->value);
|
||||
int row = Models::AddEntry(model, tr(sel->description), sel->value);
|
||||
|
||||
if (sel->value == value)
|
||||
currentIndex = row;
|
||||
}
|
||||
this->ui->formLayout->addRow(config->description, cbox);
|
||||
this->ui->formLayout->addRow(tr(config->description), cbox);
|
||||
cbox->setCurrentIndex(currentIndex);
|
||||
break;
|
||||
}
|
||||
@@ -248,13 +248,13 @@ DeviceConfig::ProcessConfig(void *dc, const void *c, const bool is_dep)
|
||||
for (int d = 0; d < bios->files_no; d++)
|
||||
p += !!rom_present(const_cast<char *>(bios->files[d]));
|
||||
if (p == bios->files_no) {
|
||||
const int row = Models::AddEntry(model, bios->name, q);
|
||||
const int row = Models::AddEntry(model, tr(bios->name), q);
|
||||
if (!strcmp(selected.toUtf8().constData(), bios->internal_name))
|
||||
currentIndex = row;
|
||||
}
|
||||
q++;
|
||||
}
|
||||
this->ui->formLayout->addRow(config->description, cbox);
|
||||
this->ui->formLayout->addRow(tr(config->description), cbox);
|
||||
cbox->setCurrentIndex(currentIndex);
|
||||
break;
|
||||
}
|
||||
@@ -267,7 +267,7 @@ DeviceConfig::ProcessConfig(void *dc, const void *c, const bool is_dep)
|
||||
if (config->spinner.step > 0)
|
||||
spinBox->setSingleStep(config->spinner.step);
|
||||
spinBox->setValue(value);
|
||||
this->ui->formLayout->addRow(config->description, spinBox);
|
||||
this->ui->formLayout->addRow(tr(config->description), spinBox);
|
||||
break;
|
||||
}
|
||||
case CONFIG_FNAME:
|
||||
@@ -277,7 +277,7 @@ DeviceConfig::ProcessConfig(void *dc, const void *c, const bool is_dep)
|
||||
fileField->setFileName(selected);
|
||||
fileField->setFilter(QString(config->file_filter).left(static_cast<int>(strcspn(config->file_filter,
|
||||
"|"))));
|
||||
this->ui->formLayout->addRow(config->description, fileField);
|
||||
this->ui->formLayout->addRow(tr(config->description), fileField);
|
||||
break;
|
||||
}
|
||||
case CONFIG_STRING:
|
||||
@@ -286,7 +286,7 @@ DeviceConfig::ProcessConfig(void *dc, const void *c, const bool is_dep)
|
||||
lineEdit->setObjectName(config->name);
|
||||
lineEdit->setCursor(Qt::IBeamCursor);
|
||||
lineEdit->setText(selected);
|
||||
this->ui->formLayout->addRow(config->description, lineEdit);
|
||||
this->ui->formLayout->addRow(tr(config->description), lineEdit);
|
||||
break;
|
||||
}
|
||||
case CONFIG_SERPORT:
|
||||
@@ -305,7 +305,7 @@ DeviceConfig::ProcessConfig(void *dc, const void *c, const bool is_dep)
|
||||
currentIndex = row;
|
||||
}
|
||||
|
||||
this->ui->formLayout->addRow(config->description, cbox);
|
||||
this->ui->formLayout->addRow(tr(config->description), cbox);
|
||||
cbox->setCurrentIndex(currentIndex);
|
||||
break;
|
||||
}
|
||||
@@ -337,7 +337,7 @@ DeviceConfig::ProcessConfig(void *dc, const void *c, const bool is_dep)
|
||||
});
|
||||
hboxLayout->addWidget(lineEdit);
|
||||
hboxLayout->addWidget(generateButton);
|
||||
this->ui->formLayout->addRow(config->description, hboxLayout);
|
||||
this->ui->formLayout->addRow(tr(config->description), hboxLayout);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -349,15 +349,15 @@ void
|
||||
DeviceConfig::ConfigureDevice(const _device_ *device, int instance, Settings *settings)
|
||||
{
|
||||
DeviceConfig dc(settings);
|
||||
dc.setWindowTitle(QString("%1 Device Configuration").arg(device->name));
|
||||
dc.setWindowTitle(tr("%1 Device Configuration").arg(tr(device->name)));
|
||||
|
||||
device_context_t device_context;
|
||||
device_set_context(&device_context, device, instance);
|
||||
|
||||
const auto device_label = new QLabel(device->name);
|
||||
const auto device_label = new QLabel(tr(device->name));
|
||||
device_label->setAlignment(Qt::AlignCenter);
|
||||
dc.ui->formLayout->addRow(device_label);
|
||||
const auto line = new QFrame;
|
||||
const auto line = new QFrame;
|
||||
line->setFrameShape(QFrame::HLine);
|
||||
line->setFrameShadow(QFrame::Sunken);
|
||||
dc.ui->formLayout->addRow(line);
|
||||
@@ -463,6 +463,6 @@ DeviceConfig::DeviceName(const _device_ *device, const char *internalName, const
|
||||
else {
|
||||
char temp[512];
|
||||
device_get_name(device, bus, temp);
|
||||
return tr(temp, nullptr, 512);
|
||||
return tr((const char *) temp);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -396,7 +396,7 @@ main(int argc, char *argv[])
|
||||
|
||||
/* Set the PAUSE mode depending on the renderer. */
|
||||
#ifdef USE_VNC
|
||||
if (vnc_enabled && vid_api != 5)
|
||||
if (vid_api == 5)
|
||||
plat_pause(1);
|
||||
else
|
||||
#endif
|
||||
|
||||
@@ -1197,7 +1197,7 @@ static const device_config_t aha_154xb_config[] = {
|
||||
},
|
||||
{
|
||||
.name = "dma",
|
||||
.description = "DMA channel",
|
||||
.description = "DMA",
|
||||
.type = CONFIG_SELECTION,
|
||||
.default_string = "",
|
||||
.default_int = 6,
|
||||
@@ -1290,7 +1290,7 @@ static const device_config_t aha_154x_config[] = {
|
||||
},
|
||||
{
|
||||
.name = "dma",
|
||||
.description = "DMA channel",
|
||||
.description = "DMA",
|
||||
.type = CONFIG_SELECTION,
|
||||
.default_string = "",
|
||||
.default_int = 6,
|
||||
@@ -1363,7 +1363,7 @@ static const device_config_t aha_154xcf_config[] = {
|
||||
},
|
||||
{
|
||||
.name = "dma",
|
||||
.description = "DMA channel",
|
||||
.description = "DMA",
|
||||
.type = CONFIG_SELECTION,
|
||||
.default_string = "",
|
||||
.default_int = 6,
|
||||
@@ -1397,7 +1397,7 @@ static const device_config_t aha_154xcf_config[] = {
|
||||
},
|
||||
{
|
||||
.name = "fdc_addr",
|
||||
.description = "FDC address",
|
||||
.description = "FDC Address",
|
||||
.type = CONFIG_HEX16,
|
||||
.default_string = "",
|
||||
.default_int = 0,
|
||||
|
||||
@@ -1818,7 +1818,7 @@ static const device_config_t BT_ISA_Config[] = {
|
||||
},
|
||||
{
|
||||
.name = "dma",
|
||||
.description = "DMA channel",
|
||||
.description = "DMA",
|
||||
.type = CONFIG_SELECTION,
|
||||
.default_string = "",
|
||||
.default_int = 6,
|
||||
|
||||
@@ -836,7 +836,7 @@ static const device_config_t rt1000b_config[] = {
|
||||
},
|
||||
{
|
||||
.name = "bios_ver",
|
||||
.description = "BIOS Version",
|
||||
.description = "BIOS Revision",
|
||||
.type = CONFIG_BIOS,
|
||||
.default_string = "v8_10r",
|
||||
.default_int = 0,
|
||||
|
||||
@@ -2667,7 +2667,7 @@ static const device_config_t ncr53c8xx_pci_config[] = {
|
||||
// clang-format off
|
||||
{
|
||||
.name = "bios",
|
||||
.description = "BIOS",
|
||||
.description = "BIOS Revision",
|
||||
.type = CONFIG_SELECTION,
|
||||
.default_string = "",
|
||||
.default_int = 1,
|
||||
|
||||
@@ -455,11 +455,8 @@ spock_process_imm_cmd(spock_t *scsi)
|
||||
int phys_id;
|
||||
int lun_id;
|
||||
|
||||
scsi->assign = 0;
|
||||
|
||||
switch (scsi->command & CMD_MASK) {
|
||||
case CMD_ASSIGN:
|
||||
scsi->assign = 1;
|
||||
adapter_id = (scsi->command >> 16) & 15;
|
||||
phys_id = (scsi->command >> 20) & 7;
|
||||
lun_id = (scsi->command >> 24) & 7;
|
||||
@@ -512,6 +509,7 @@ spock_process_imm_cmd(spock_t *scsi)
|
||||
scsi->present[j] = i;
|
||||
j++;
|
||||
} else {
|
||||
scsi->present[j] = 0xff;
|
||||
spock_log("Adapter Reset, SCSI reset not present devices=%d, phys ID=%d, type=%04x.\n", j, scsi->dev_id[i].phys_id, scsi_devices[scsi->bus][i].type);
|
||||
}
|
||||
}
|
||||
@@ -566,6 +564,7 @@ spock_execute_cmd(spock_t *scsi, scb_t *scb)
|
||||
scsi->present[j] = c;
|
||||
j++;
|
||||
} else {
|
||||
scsi->present[j] = 0xff;
|
||||
spock_log("Reset, SCSI reset not present devices=%d, phys ID=%d, type=%04x.\n", j, scsi->dev_id[c].phys_id, scsi_devices[scsi->bus][c].type);
|
||||
}
|
||||
}
|
||||
@@ -699,7 +698,11 @@ spock_execute_cmd(spock_t *scsi, scb_t *scb)
|
||||
break;
|
||||
|
||||
case CMD_DEVICE_INQUIRY:
|
||||
scsi->cdb_id = scsi->assign ? scsi->dev_id[scsi->scb_id].phys_id : scsi->present[scsi->scb_id];
|
||||
if (scsi->present[scsi->scb_id] != 0xff)
|
||||
scsi->cdb_id = scsi->dev_id[scsi->scb_id].phys_id;
|
||||
else
|
||||
scsi->cdb_id = 0xff;
|
||||
|
||||
spock_log("Device Inquiry, ID=%d\n", scsi->cdb_id);
|
||||
scsi->cdb[0] = GPCMD_INQUIRY;
|
||||
scsi->cdb[1] = scsi->dev_id[scsi->scb_id].lun_id << 5; /*LUN*/
|
||||
@@ -715,9 +718,13 @@ spock_execute_cmd(spock_t *scsi, scb_t *scb)
|
||||
return;
|
||||
|
||||
case CMD_SEND_OTHER_SCSI:
|
||||
scsi->cdb_id = scsi->assign ? scsi->dev_id[scsi->scb_id].phys_id : scsi->present[scsi->scb_id];
|
||||
if (scsi->present[scsi->scb_id] != 0xff)
|
||||
scsi->cdb_id = scsi->dev_id[scsi->scb_id].phys_id;
|
||||
else
|
||||
scsi->cdb_id = 0xff;
|
||||
|
||||
dma_bm_read(scsi->scb_addr + 0x18, scsi->cdb, 12, 2);
|
||||
spock_log("Send Other SCSI, SCB ID=%d, PHYS ID=%d, CDB[0]=%02x, CDB_ID=%d\n", scsi->scb_id, scsi->dev_id[scsi->scb_id].phys_id, scsi->cdb[0], scsi->cdb_id);
|
||||
spock_log("Send Other SCSI, SCB ID=%d, PHYS ID=%d, CDB[0]=%02x, CDB_ID=%d, ID Present=%d.\n", scsi->scb_id, scsi->dev_id[scsi->scb_id].phys_id, scsi->cdb[0], scsi->cdb_id, scsi->present[scsi->scb_id]);
|
||||
scsi->cdb[1] = (scsi->cdb[1] & 0x1f) | (scsi->dev_id[scsi->scb_id].lun_id << 5); /*Patch correct LUN into command*/
|
||||
scsi->cdb_len = (scb->lba_addr & 0xff) ? (scb->lba_addr & 0xff) : 6;
|
||||
scsi->scsi_state = SCSI_STATE_SELECT;
|
||||
@@ -725,7 +732,11 @@ spock_execute_cmd(spock_t *scsi, scb_t *scb)
|
||||
return;
|
||||
|
||||
case CMD_READ_DEVICE_CAPACITY:
|
||||
scsi->cdb_id = scsi->assign ? scsi->dev_id[scsi->scb_id].phys_id : scsi->present[scsi->scb_id];
|
||||
if (scsi->present[scsi->scb_id] != 0xff)
|
||||
scsi->cdb_id = scsi->dev_id[scsi->scb_id].phys_id;
|
||||
else
|
||||
scsi->cdb_id = 0xff;
|
||||
|
||||
spock_log("Device Capacity, SCB ID=%d, PHYS ID=%d\n", scsi->scb_id, scsi->dev_id[scsi->scb_id].phys_id);
|
||||
scsi->cdb[0] = GPCMD_READ_CDROM_CAPACITY;
|
||||
scsi->cdb[1] = scsi->dev_id[scsi->scb_id].lun_id << 5; /*LUN*/
|
||||
@@ -743,7 +754,11 @@ spock_execute_cmd(spock_t *scsi, scb_t *scb)
|
||||
return;
|
||||
|
||||
case CMD_READ_DATA:
|
||||
scsi->cdb_id = scsi->assign ? scsi->dev_id[scsi->scb_id].phys_id : scsi->present[scsi->scb_id];
|
||||
if (scsi->present[scsi->scb_id] != 0xff)
|
||||
scsi->cdb_id = scsi->dev_id[scsi->scb_id].phys_id;
|
||||
else
|
||||
scsi->cdb_id = 0xff;
|
||||
|
||||
spock_log("Device Read Data, SCB ID=%d, PHYS ID=%d\n", scsi->scb_id, scsi->dev_id[scsi->scb_id].phys_id);
|
||||
scsi->cdb[0] = GPCMD_READ_10;
|
||||
scsi->cdb[1] = scsi->dev_id[scsi->scb_id].lun_id << 5; /*LUN*/
|
||||
@@ -761,7 +776,11 @@ spock_execute_cmd(spock_t *scsi, scb_t *scb)
|
||||
return;
|
||||
|
||||
case CMD_WRITE_DATA:
|
||||
scsi->cdb_id = scsi->assign ? scsi->dev_id[scsi->scb_id].phys_id : scsi->present[scsi->scb_id];
|
||||
if (scsi->present[scsi->scb_id] != 0xff)
|
||||
scsi->cdb_id = scsi->dev_id[scsi->scb_id].phys_id;
|
||||
else
|
||||
scsi->cdb_id = 0xff;
|
||||
|
||||
spock_log("Device Write Data\n");
|
||||
scsi->cdb[0] = GPCMD_WRITE_10;
|
||||
scsi->cdb[1] = scsi->dev_id[scsi->scb_id].lun_id << 5; /*LUN*/
|
||||
@@ -779,7 +798,11 @@ spock_execute_cmd(spock_t *scsi, scb_t *scb)
|
||||
return;
|
||||
|
||||
case CMD_VERIFY:
|
||||
scsi->cdb_id = scsi->assign ? scsi->dev_id[scsi->scb_id].phys_id : scsi->present[scsi->scb_id];
|
||||
if (scsi->present[scsi->scb_id] != 0xff)
|
||||
scsi->cdb_id = scsi->dev_id[scsi->scb_id].phys_id;
|
||||
else
|
||||
scsi->cdb_id = 0xff;
|
||||
|
||||
spock_log("Device Verify\n");
|
||||
scsi->cdb[0] = GPCMD_VERIFY_10;
|
||||
scsi->cdb[1] = scsi->dev_id[scsi->scb_id].lun_id << 5; /*LUN*/
|
||||
@@ -798,7 +821,11 @@ spock_execute_cmd(spock_t *scsi, scb_t *scb)
|
||||
return;
|
||||
|
||||
case CMD_REQUEST_SENSE:
|
||||
scsi->cdb_id = scsi->assign ? scsi->dev_id[scsi->scb_id].phys_id : scsi->present[scsi->scb_id];
|
||||
if (scsi->present[scsi->scb_id] != 0xff)
|
||||
scsi->cdb_id = scsi->dev_id[scsi->scb_id].phys_id;
|
||||
else
|
||||
scsi->cdb_id = 0xff;
|
||||
|
||||
spock_log("Device Request Sense, ID=%d\n", scsi->cdb_id);
|
||||
scsi->cdb[0] = GPCMD_REQUEST_SENSE;
|
||||
scsi->cdb[1] = scsi->dev_id[scsi->scb_id].lun_id << 5; /*LUN*/
|
||||
@@ -818,7 +845,7 @@ spock_execute_cmd(spock_t *scsi, scb_t *scb)
|
||||
|
||||
case 2: /* Wait */
|
||||
if (scsi->scsi_state == SCSI_STATE_IDLE) {
|
||||
if (scsi_device_present(&scsi_devices[scsi->bus][scsi->cdb_id])) {
|
||||
if (scsi_device_present(&scsi_devices[scsi->bus][scsi->cdb_id]) && (scsi->cdb_id != 0xff)) {
|
||||
if (scsi->last_status == SCSI_STATUS_OK) {
|
||||
scsi->scb_state = 3;
|
||||
spock_log("Status is Good on device ID %d, cdb id = %d.\n", scsi->scb_id, scsi->cdb_id);
|
||||
@@ -878,7 +905,7 @@ spock_process_scsi(spock_t *scsi, scb_t *scb)
|
||||
|
||||
case SCSI_STATE_SELECT:
|
||||
spock_log("Selecting ID %d, SCB ID %d, LUN %d, adapter id = %d.\n", scsi->cdb_id, scsi->scb_id, scsi->dev_id[scsi->scb_id].lun_id, scsi->attention);
|
||||
if ((scsi->cdb_id != (uint8_t) -1) && scsi_device_present(&scsi_devices[scsi->bus][scsi->cdb_id])) {
|
||||
if ((scsi->cdb_id != 0xff) && scsi_device_present(&scsi_devices[scsi->bus][scsi->cdb_id])) {
|
||||
scsi->scsi_state = SCSI_STATE_SEND_COMMAND;
|
||||
spock_log("Device selected at ID %i.\n", scsi->cdb_id);
|
||||
} else {
|
||||
@@ -893,6 +920,7 @@ spock_process_scsi(spock_t *scsi, scb_t *scb)
|
||||
break;
|
||||
|
||||
case SCSI_STATE_SEND_COMMAND:
|
||||
spock_log("Send Command ID=%d.\n", scsi->cdb_id);
|
||||
sd = &scsi_devices[scsi->bus][scsi->cdb_id];
|
||||
memset(scsi->temp_cdb, 0x00, 12);
|
||||
|
||||
@@ -954,9 +982,9 @@ spock_process_scsi(spock_t *scsi, scb_t *scb)
|
||||
}
|
||||
} else {
|
||||
spock_log("Normal Transfer\n");
|
||||
if (sd->phase == SCSI_PHASE_DATA_IN) {
|
||||
if (sd->phase == SCSI_PHASE_DATA_IN)
|
||||
dma_bm_write(scsi->data_ptr, sd->sc->temp_buffer, MIN(sd->buffer_length, (int) scsi->data_len), 2);
|
||||
} else if (sd->phase == SCSI_PHASE_DATA_OUT)
|
||||
else if (sd->phase == SCSI_PHASE_DATA_OUT)
|
||||
dma_bm_read(scsi->data_ptr, sd->sc->temp_buffer, MIN(sd->buffer_length, (int) scsi->data_len), 2);
|
||||
}
|
||||
|
||||
@@ -1077,9 +1105,11 @@ spock_mca_write(int port, uint8_t val, void *priv)
|
||||
|
||||
if (scsi->pos_regs[2] & 1) {
|
||||
io_sethandler((((scsi->pos_regs[2] >> 1) & 7) * 8) + 0x3540, 0x0008, spock_read, spock_readw, NULL, spock_write, spock_writew, NULL, scsi);
|
||||
if ((scsi->pos_regs[2] & 0xf0) != 0xf0) {
|
||||
mem_mapping_set_addr(&scsi->bios_rom.mapping, ((scsi->pos_regs[2] >> 4) * 0x2000) + 0xc0000, 0x8000);
|
||||
mem_mapping_enable(&scsi->bios_rom.mapping);
|
||||
if (scsi->pos_regs[4] & 2) {
|
||||
if (((scsi->pos_regs[2] >> 4) & 0x0f) != 0x0f) {
|
||||
mem_mapping_set_addr(&scsi->bios_rom.mapping, ((scsi->pos_regs[2] >> 4) * 0x2000) + 0xc0000, 0x8000);
|
||||
mem_mapping_enable(&scsi->bios_rom.mapping);
|
||||
}
|
||||
}
|
||||
}
|
||||
spock_log("[%04X:%08X]: POS Write Port = %x, val = %02x, rom addr = %05x\n", CS, cpu_state.pc, port & 7, val, ((scsi->pos_regs[2] >> 4) * 0x2000) + 0xc0000);
|
||||
@@ -1120,11 +1150,12 @@ spock_mca_reset(void *priv)
|
||||
/* Reset all devices on controller reset. */
|
||||
for (uint8_t i = 0; i < 8; i++) {
|
||||
scsi_device_reset(&scsi_devices[scsi->bus][i]);
|
||||
scsi->present[i] = 0;
|
||||
scsi->present[i] = 0xff;
|
||||
}
|
||||
|
||||
spock_log("Reset.\n");
|
||||
mem_mapping_disable(&scsi->bios_rom.mapping);
|
||||
scsi->pos_regs[4] = 0x02;
|
||||
spock_mca_write(0x102, 0, scsi);
|
||||
}
|
||||
|
||||
@@ -1158,6 +1189,7 @@ spock_init(const device_t *info)
|
||||
|
||||
scsi->pos_regs[0] = scsi->spock_16bit ? 0xfe : 0xff;
|
||||
scsi->pos_regs[1] = 0x8e;
|
||||
scsi->pos_regs[4] = 0x02;
|
||||
mca_add(spock_mca_read, spock_mca_write, spock_mca_feedb, spock_mca_reset, scsi);
|
||||
|
||||
scsi->in_reset = 2;
|
||||
@@ -1201,7 +1233,7 @@ static const device_config_t spock_rom_config[] = {
|
||||
// clang-format off
|
||||
{
|
||||
.name = "bios_ver",
|
||||
.description = "BIOS Version",
|
||||
.description = "BIOS Revision",
|
||||
.type = CONFIG_SELECTION,
|
||||
.default_string = "",
|
||||
.default_int = 1,
|
||||
|
||||
@@ -573,7 +573,7 @@ static const device_config_t t128_config[] = {
|
||||
},
|
||||
{
|
||||
.name = "boot",
|
||||
.description = "Enable Boot ROM",
|
||||
.description = "Enable BIOS",
|
||||
.type = CONFIG_BINARY,
|
||||
.default_string = "",
|
||||
.default_int = 1
|
||||
|
||||
@@ -83,12 +83,12 @@ static const MIDI_OUT_DEVICE devices[] = {
|
||||
{ &cm32l_device },
|
||||
{ &cm32ln_device },
|
||||
#endif /*USE_MUNT */
|
||||
#ifdef USE_RTMIDI
|
||||
{ &rtmidi_output_device },
|
||||
#endif /* USE_RTMIDI */
|
||||
#ifdef USE_OPL4ML
|
||||
{ &opl4_midi_device },
|
||||
#endif /* USE_OPL4ML */
|
||||
#ifdef USE_RTMIDI
|
||||
{ &rtmidi_output_device },
|
||||
#endif /* USE_RTMIDI */
|
||||
{ NULL }
|
||||
// clang-format on
|
||||
};
|
||||
|
||||
@@ -321,7 +321,7 @@ static const device_config_t fluidsynth_config[] = {
|
||||
// clang-format off
|
||||
{
|
||||
.name = "sound_font",
|
||||
.description = "Sound Font",
|
||||
.description = "SoundFont",
|
||||
.type = CONFIG_FNAME,
|
||||
.default_string = "",
|
||||
.file_filter = "SF2 Sound Fonts (*.sf2)|*.sf2"
|
||||
|
||||
@@ -234,7 +234,7 @@ static const device_config_t system_midi_config[] = {
|
||||
// clang-format off
|
||||
{
|
||||
.name = "midi",
|
||||
.description = "MIDI out device",
|
||||
.description = "MIDI Output Device",
|
||||
.type = CONFIG_MIDI_OUT,
|
||||
.default_string = "",
|
||||
.default_int = 0
|
||||
@@ -247,7 +247,7 @@ static const device_config_t midi_input_config[] = {
|
||||
// clang-format off
|
||||
{
|
||||
.name = "midi_input",
|
||||
.description = "MIDI in device",
|
||||
.description = "MIDI Input Device",
|
||||
.type = CONFIG_MIDI_IN,
|
||||
.default_string = "",
|
||||
.default_int = 0
|
||||
|
||||
@@ -1222,7 +1222,7 @@ static const device_config_t adgold_config[] = {
|
||||
},
|
||||
{
|
||||
.name = "dma",
|
||||
.description = "Low DMA channel",
|
||||
.description = "Low DMA",
|
||||
.type = CONFIG_SELECTION,
|
||||
.default_string = "",
|
||||
.default_int = 1,
|
||||
@@ -1256,7 +1256,7 @@ static const device_config_t adgold_config[] = {
|
||||
},
|
||||
{
|
||||
.name = "receive_input",
|
||||
.description = "Receive input (MIDI)",
|
||||
.description = "Receive MIDI input",
|
||||
.type = CONFIG_BINARY,
|
||||
.default_string = "",
|
||||
.default_int = 1
|
||||
|
||||
@@ -2311,7 +2311,7 @@ static const device_config_t es1371_config[] = {
|
||||
},
|
||||
{
|
||||
.name = "receive_input",
|
||||
.description = "Receive input (MIDI)",
|
||||
.description = "Receive MIDI input",
|
||||
.type = CONFIG_BINARY,
|
||||
.default_string = "",
|
||||
.default_int = 1
|
||||
@@ -2345,7 +2345,7 @@ static const device_config_t es1373_config[] = {
|
||||
},
|
||||
{
|
||||
.name = "receive_input",
|
||||
.description = "Receive input (MIDI)",
|
||||
.description = "Receive MIDI input",
|
||||
.type = CONFIG_BINARY,
|
||||
.default_string = "",
|
||||
.default_int = 1
|
||||
@@ -2375,7 +2375,7 @@ static const device_config_t ct5880_config[] = {
|
||||
},
|
||||
{
|
||||
.name = "receive_input",
|
||||
.description = "Receive input (MIDI)",
|
||||
.description = "Receive MIDI input",
|
||||
.type = CONFIG_BINARY,
|
||||
.default_string = "",
|
||||
.default_int = 1
|
||||
@@ -2388,7 +2388,7 @@ static const device_config_t es1371_onboard_config[] = {
|
||||
// clang-format off
|
||||
{
|
||||
.name = "receive_input",
|
||||
.description = "Receive input (MIDI)",
|
||||
.description = "Receive MIDI input",
|
||||
.type = CONFIG_BINARY,
|
||||
.default_string = "",
|
||||
.default_int = 1
|
||||
|
||||
@@ -1443,14 +1443,14 @@ static const device_config_t azt1605_config[] = {
|
||||
},
|
||||
{
|
||||
.name = "receive_input",
|
||||
.description = "Receive input (SB MIDI)",
|
||||
.description = "Receive MIDI input",
|
||||
.type = CONFIG_BINARY,
|
||||
.default_string = "",
|
||||
.default_int = 1
|
||||
},
|
||||
{
|
||||
.name = "receive_input401",
|
||||
.description = "Receive input (MPU-401)",
|
||||
.description = "Receive MIDI input (MPU-401)",
|
||||
.type = CONFIG_BINARY,
|
||||
.default_string = "",
|
||||
.default_int = 0
|
||||
@@ -1564,14 +1564,14 @@ static const device_config_t azt2316a_config[] = {
|
||||
},
|
||||
{
|
||||
.name = "receive_input",
|
||||
.description = "Receive input (SB MIDI)",
|
||||
.description = "Receive MIDI input",
|
||||
.type = CONFIG_BINARY,
|
||||
.default_string = "",
|
||||
.default_int = 1
|
||||
},
|
||||
{
|
||||
.name = "receive_input401",
|
||||
.description = "Receive input (MPU-401)",
|
||||
.description = "Receive MIDI input",
|
||||
.type = CONFIG_BINARY,
|
||||
.default_string = "",
|
||||
.default_int = 0
|
||||
|
||||
@@ -1510,7 +1510,7 @@ static const device_config_t cmi8x38_config[] = {
|
||||
// clang-format off
|
||||
{
|
||||
.name = "receive_input",
|
||||
.description = "Receive input (MPU-401)",
|
||||
.description = "Receive MIDI input",
|
||||
.type = CONFIG_BINARY,
|
||||
.default_string = "",
|
||||
.default_int = 1
|
||||
@@ -1530,7 +1530,7 @@ static const device_config_t cmi8738_config[] = {
|
||||
},
|
||||
{
|
||||
.name = "receive_input",
|
||||
.description = "Receive input (MPU-401)",
|
||||
.description = "Receive MIDI input",
|
||||
.type = CONFIG_BINARY,
|
||||
.default_string = "",
|
||||
.default_int = 1
|
||||
|
||||
@@ -1491,7 +1491,7 @@ static const device_config_t gus_config[] = {
|
||||
},
|
||||
{
|
||||
.name = "gus_ram",
|
||||
"Onboard RAM",
|
||||
"Memory size",
|
||||
.type = CONFIG_SELECTION,
|
||||
.default_string = "",
|
||||
.default_int = 0,
|
||||
@@ -1499,11 +1499,11 @@ static const device_config_t gus_config[] = {
|
||||
.spinner = { 0 },
|
||||
.selection = {
|
||||
{
|
||||
.description = "256 KB",
|
||||
.description = "256 kB",
|
||||
.value = 0
|
||||
},
|
||||
{
|
||||
.description = "512 KB",
|
||||
.description = "512 kB",
|
||||
.value = 1
|
||||
},
|
||||
{
|
||||
@@ -1515,7 +1515,7 @@ static const device_config_t gus_config[] = {
|
||||
},
|
||||
{
|
||||
.name = "receive_input",
|
||||
.description = "Receive input (SB MIDI)",
|
||||
.description = "Receive MIDI input",
|
||||
.type = CONFIG_BINARY,
|
||||
.default_string = "",
|
||||
.default_int = 1
|
||||
|
||||
@@ -1901,7 +1901,7 @@ static const device_config_t mpu401_standalone_config[] = {
|
||||
},
|
||||
{
|
||||
.name = "receive_input",
|
||||
.description = "Receive input",
|
||||
.description = "Receive MIDI input",
|
||||
.type = CONFIG_BINARY,
|
||||
.default_int = 1
|
||||
},
|
||||
@@ -1949,7 +1949,7 @@ static const device_config_t mpu401_standalone_mca_config[] = {
|
||||
},
|
||||
{
|
||||
.name = "receive_input",
|
||||
.description = "Receive input",
|
||||
.description = "Receive MIDI input",
|
||||
.type = CONFIG_BINARY,
|
||||
.default_int = 1
|
||||
},
|
||||
|
||||
@@ -458,14 +458,14 @@ static const device_config_t optimc_config[] = {
|
||||
// clang-format off
|
||||
{
|
||||
.name = "receive_input",
|
||||
.description = "Receive input (SB MIDI)",
|
||||
.description = "Receive MIDI input",
|
||||
.type = CONFIG_BINARY,
|
||||
.default_string = "",
|
||||
.default_int = 1
|
||||
},
|
||||
{
|
||||
.name = "receive_input401",
|
||||
.description = "Receive input (MPU-401)",
|
||||
.description = "Receive MIDI input (MPU-401)",
|
||||
.type = CONFIG_BINARY,
|
||||
.default_string = "",
|
||||
.default_int = 0
|
||||
|
||||
@@ -2403,20 +2403,20 @@ static const device_config_t pas16_config[] = {
|
||||
.default_string = "",
|
||||
.default_int = 0
|
||||
},
|
||||
{
|
||||
.name = "receive_input401",
|
||||
.description = "Receive input (MPU-401)",
|
||||
.type = CONFIG_BINARY,
|
||||
.default_string = "",
|
||||
.default_int = 0
|
||||
},
|
||||
{
|
||||
.name = "receive_input",
|
||||
.description = "Receive input (PAS MIDI)",
|
||||
.description = "Receive MIDI input",
|
||||
.type = CONFIG_BINARY,
|
||||
.default_string = "",
|
||||
.default_int = 1
|
||||
},
|
||||
{
|
||||
.name = "receive_input401",
|
||||
.description = "Receive MIDI input (MPU-401)",
|
||||
.type = CONFIG_BINARY,
|
||||
.default_string = "",
|
||||
.default_int = 0
|
||||
},
|
||||
{ .name = "", .description = "", .type = CONFIG_END }
|
||||
};
|
||||
|
||||
|
||||
@@ -4055,7 +4055,7 @@ static const device_config_t sb_config[] = {
|
||||
},
|
||||
{
|
||||
.name = "receive_input",
|
||||
.description = "Receive input (DSP MIDI)",
|
||||
.description = "Receive MIDI input",
|
||||
.type = CONFIG_BINARY,
|
||||
.default_string = "",
|
||||
.default_int = 1
|
||||
@@ -4165,7 +4165,7 @@ static const device_config_t sb15_config[] = {
|
||||
},
|
||||
{
|
||||
.name = "receive_input",
|
||||
.description = "Receive input (DSP MIDI)",
|
||||
.description = "Receive MIDI input",
|
||||
.type = CONFIG_BINARY,
|
||||
.default_string = "",
|
||||
.default_int = 1
|
||||
@@ -4294,7 +4294,7 @@ static const device_config_t sb2_config[] = {
|
||||
},
|
||||
{
|
||||
.name = "receive_input",
|
||||
.description = "Receive input (DSP MIDI)",
|
||||
.description = "Receive MIDI input",
|
||||
.type = CONFIG_BINARY,
|
||||
.default_string = "",
|
||||
.default_int = 1
|
||||
@@ -4360,7 +4360,7 @@ static const device_config_t sb_mcv_config[] = {
|
||||
},
|
||||
{
|
||||
.name = "receive_input",
|
||||
.description = "Receive input (DSP MIDI)",
|
||||
.description = "Receive MIDI input",
|
||||
.type = CONFIG_BINARY,
|
||||
.default_string = "",
|
||||
.default_int = 1
|
||||
@@ -4450,7 +4450,7 @@ static const device_config_t sb_pro_config[] = {
|
||||
},
|
||||
{
|
||||
.name = "receive_input",
|
||||
.description = "Receive input (DSP MIDI)",
|
||||
.description = "Receive MIDI input",
|
||||
.type = CONFIG_BINARY,
|
||||
.default_string = "",
|
||||
.default_int = 1
|
||||
@@ -4461,7 +4461,7 @@ static const device_config_t sb_pro_config[] = {
|
||||
static const device_config_t sb_pro_mcv_config[] = {
|
||||
{
|
||||
.name = "receive_input",
|
||||
.description = "Receive input (DSP MIDI)",
|
||||
.description = "Receive MIDI input",
|
||||
.type = CONFIG_BINARY,
|
||||
.default_string = "",
|
||||
.default_int = 1
|
||||
@@ -4552,7 +4552,7 @@ static const device_config_t sb_16_config[] = {
|
||||
},
|
||||
{
|
||||
.name = "dma",
|
||||
.description = "Low DMA channel",
|
||||
.description = "Low DMA",
|
||||
.type = CONFIG_SELECTION,
|
||||
.default_string = "",
|
||||
.default_int = 1,
|
||||
@@ -4576,7 +4576,7 @@ static const device_config_t sb_16_config[] = {
|
||||
},
|
||||
{
|
||||
.name = "dma16",
|
||||
.description = "High DMA channel",
|
||||
.description = "High DMA",
|
||||
.type = CONFIG_SELECTION,
|
||||
.default_string = "",
|
||||
.default_int = 5,
|
||||
@@ -4614,14 +4614,14 @@ static const device_config_t sb_16_config[] = {
|
||||
},
|
||||
{
|
||||
.name = "receive_input",
|
||||
.description = "Receive input (DSP MIDI)",
|
||||
.description = "Receive MIDI input",
|
||||
.type = CONFIG_BINARY,
|
||||
.default_string = "",
|
||||
.default_int = 1
|
||||
},
|
||||
{
|
||||
.name = "receive_input401",
|
||||
.description = "Receive input (MPU-401)",
|
||||
.description = "Receive MIDI input (MPU-401)",
|
||||
.type = CONFIG_BINARY,
|
||||
.default_string = "",
|
||||
.default_int = 0
|
||||
@@ -4639,14 +4639,14 @@ static const device_config_t sb_16_pnp_config[] = {
|
||||
},
|
||||
{
|
||||
.name = "receive_input",
|
||||
.description = "Receive input (DSP MIDI)",
|
||||
.description = "Receive MIDI input",
|
||||
.type = CONFIG_BINARY,
|
||||
.default_string = "",
|
||||
.default_int = 1
|
||||
},
|
||||
{
|
||||
.name = "receive_input401",
|
||||
.description = "Receive input (MPU-401)",
|
||||
.description = "Receive MIDI input (MPU-401)",
|
||||
.type = CONFIG_BINARY,
|
||||
.default_string = "",
|
||||
.default_int = 0
|
||||
@@ -4657,7 +4657,7 @@ static const device_config_t sb_16_pnp_config[] = {
|
||||
static const device_config_t sb_32_pnp_config[] = {
|
||||
{
|
||||
.name = "onboard_ram",
|
||||
.description = "Onboard RAM",
|
||||
.description = "Memory size",
|
||||
.type = CONFIG_SELECTION,
|
||||
.default_string = "",
|
||||
.default_int = 0,
|
||||
@@ -4669,7 +4669,7 @@ static const device_config_t sb_32_pnp_config[] = {
|
||||
.value = 0
|
||||
},
|
||||
{
|
||||
.description = "512 KB",
|
||||
.description = "512 kB",
|
||||
.value = 512
|
||||
},
|
||||
{
|
||||
@@ -4696,14 +4696,14 @@ static const device_config_t sb_32_pnp_config[] = {
|
||||
},
|
||||
{
|
||||
.name = "receive_input",
|
||||
.description = "Receive input (DSP MIDI)",
|
||||
.description = "Receive MIDI input",
|
||||
.type = CONFIG_BINARY,
|
||||
.default_string = "",
|
||||
.default_int = 1
|
||||
},
|
||||
{
|
||||
.name = "receive_input401",
|
||||
.description = "Receive input (MPU-401)",
|
||||
.description = "Receive MIDI input (MPU-401)",
|
||||
.type = CONFIG_BINARY,
|
||||
.default_string = "",
|
||||
.default_int = 0
|
||||
@@ -4822,7 +4822,7 @@ static const device_config_t sb_awe32_config[] = {
|
||||
},
|
||||
{
|
||||
.name = "dma",
|
||||
.description = "Low DMA channel",
|
||||
.description = "Low DMA",
|
||||
.type = CONFIG_SELECTION,
|
||||
.default_string = "",
|
||||
.default_int = 1,
|
||||
@@ -4846,7 +4846,7 @@ static const device_config_t sb_awe32_config[] = {
|
||||
},
|
||||
{
|
||||
.name = "dma16",
|
||||
.description = "High DMA channel",
|
||||
.description = "High DMA",
|
||||
.type = CONFIG_SELECTION,
|
||||
.default_string = "",
|
||||
.default_int = 5,
|
||||
@@ -4870,7 +4870,7 @@ static const device_config_t sb_awe32_config[] = {
|
||||
},
|
||||
{
|
||||
.name = "onboard_ram",
|
||||
.description = "Onboard RAM",
|
||||
.description = "Memory size",
|
||||
.type = CONFIG_SELECTION,
|
||||
.default_string = "",
|
||||
.default_int = 512,
|
||||
@@ -4882,7 +4882,7 @@ static const device_config_t sb_awe32_config[] = {
|
||||
.value = 0
|
||||
},
|
||||
{
|
||||
.description = "512 KB",
|
||||
.description = "512 kB",
|
||||
.value = 512
|
||||
},
|
||||
{
|
||||
@@ -4916,14 +4916,14 @@ static const device_config_t sb_awe32_config[] = {
|
||||
},
|
||||
{
|
||||
.name = "receive_input",
|
||||
.description = "Receive input (DSP MIDI)",
|
||||
.description = "Receive MIDI input",
|
||||
.type = CONFIG_BINARY,
|
||||
.default_string = "",
|
||||
.default_int = 1
|
||||
},
|
||||
{
|
||||
.name = "receive_input401",
|
||||
.description = "Receive input (MPU-401)",
|
||||
.description = "Receive MIDI input (MPU-401)",
|
||||
.type = CONFIG_BINARY,
|
||||
.default_string = "",
|
||||
.default_int = 0
|
||||
@@ -4934,7 +4934,7 @@ static const device_config_t sb_awe32_config[] = {
|
||||
static const device_config_t sb_awe32_pnp_config[] = {
|
||||
{
|
||||
.name = "onboard_ram",
|
||||
.description = "Onboard RAM",
|
||||
.description = "Memory size",
|
||||
.type = CONFIG_SELECTION,
|
||||
.default_string = "",
|
||||
.default_int = 512,
|
||||
@@ -4946,7 +4946,7 @@ static const device_config_t sb_awe32_pnp_config[] = {
|
||||
.value = 0
|
||||
},
|
||||
{
|
||||
.description = "512 KB",
|
||||
.description = "512 kB",
|
||||
.value = 512
|
||||
},
|
||||
{
|
||||
@@ -4973,14 +4973,14 @@ static const device_config_t sb_awe32_pnp_config[] = {
|
||||
},
|
||||
{
|
||||
.name = "receive_input",
|
||||
.description = "Receive input (DSP MIDI)",
|
||||
.description = "Receive MIDI input",
|
||||
.type = CONFIG_BINARY,
|
||||
.default_string = "",
|
||||
.default_int = 1
|
||||
},
|
||||
{
|
||||
.name = "receive_input401",
|
||||
.description = "Receive input (MPU-401)",
|
||||
.description = "Receive MIDI input (MPU-401)",
|
||||
.type = CONFIG_BINARY,
|
||||
.default_string = "",
|
||||
.default_int = 0
|
||||
@@ -4991,7 +4991,7 @@ static const device_config_t sb_awe32_pnp_config[] = {
|
||||
static const device_config_t sb_awe64_value_config[] = {
|
||||
{
|
||||
.name = "onboard_ram",
|
||||
.description = "Onboard RAM",
|
||||
.description = "Memory size",
|
||||
.type = CONFIG_SELECTION,
|
||||
.default_string = "",
|
||||
.default_int = 512,
|
||||
@@ -4999,7 +4999,7 @@ static const device_config_t sb_awe64_value_config[] = {
|
||||
.spinner = { 0 },
|
||||
.selection = {
|
||||
{
|
||||
.description = "512 KB",
|
||||
.description = "512 kB",
|
||||
.value = 512
|
||||
},
|
||||
{
|
||||
@@ -5050,14 +5050,14 @@ static const device_config_t sb_awe64_value_config[] = {
|
||||
},
|
||||
{
|
||||
.name = "receive_input",
|
||||
.description = "Receive input (DSP MIDI)",
|
||||
.description = "Receive MIDI input",
|
||||
.type = CONFIG_BINARY,
|
||||
.default_string = "",
|
||||
.default_int = 1
|
||||
},
|
||||
{
|
||||
.name = "receive_input401",
|
||||
.description = "Receive input (MPU-401)",
|
||||
.description = "Receive MIDI input (MPU-401)",
|
||||
.type = CONFIG_BINARY,
|
||||
.default_string = "",
|
||||
.default_int = 0
|
||||
@@ -5068,7 +5068,7 @@ static const device_config_t sb_awe64_value_config[] = {
|
||||
static const device_config_t sb_awe64_config[] = {
|
||||
{
|
||||
.name = "onboard_ram",
|
||||
.description = "Onboard RAM",
|
||||
.description = "Memory size",
|
||||
.type = CONFIG_SELECTION,
|
||||
.default_string = "",
|
||||
.default_int = 1024,
|
||||
@@ -5123,14 +5123,14 @@ static const device_config_t sb_awe64_config[] = {
|
||||
},
|
||||
{
|
||||
.name = "receive_input",
|
||||
.description = "Receive input (DSP MIDI)",
|
||||
.description = "Receive MIDI input",
|
||||
.type = CONFIG_BINARY,
|
||||
.default_string = "",
|
||||
.default_int = 1
|
||||
},
|
||||
{
|
||||
.name = "receive_input401",
|
||||
.description = "Receive input (MPU-401)",
|
||||
.description = "Receive MIDI input (MPU-401)",
|
||||
.type = CONFIG_BINARY,
|
||||
.default_string = "",
|
||||
.default_int = 0
|
||||
@@ -5141,7 +5141,7 @@ static const device_config_t sb_awe64_config[] = {
|
||||
static const device_config_t sb_awe64_gold_config[] = {
|
||||
{
|
||||
.name = "onboard_ram",
|
||||
.description = "Onboard RAM",
|
||||
.description = "Memory size",
|
||||
.type = CONFIG_SELECTION,
|
||||
.default_string = "",
|
||||
.default_int = 4096,
|
||||
@@ -5188,14 +5188,14 @@ static const device_config_t sb_awe64_gold_config[] = {
|
||||
},
|
||||
{
|
||||
.name = "receive_input",
|
||||
.description = "Receive input (DSP MIDI)",
|
||||
.description = "Receive MIDI input",
|
||||
.type = CONFIG_BINARY,
|
||||
.default_string = "",
|
||||
.default_int = 1
|
||||
},
|
||||
{
|
||||
.name = "receive_input401",
|
||||
.description = "Receive input (MPU-401)",
|
||||
.description = "Receive MIDI input (MPU-401)",
|
||||
.type = CONFIG_BINARY,
|
||||
.default_string = "",
|
||||
.default_int = 0
|
||||
@@ -5318,7 +5318,7 @@ static const device_config_t ess_688_config[] = {
|
||||
},
|
||||
{
|
||||
.name = "receive_input",
|
||||
.description = "Receive input (DSP MIDI)",
|
||||
.description = "Receive MIDI input",
|
||||
.type = CONFIG_BINARY,
|
||||
.default_string = "",
|
||||
.default_int = 1
|
||||
@@ -5449,14 +5449,14 @@ static const device_config_t ess_1688_config[] = {
|
||||
},
|
||||
{
|
||||
.name = "receive_input",
|
||||
.description = "Receive input (DSP MIDI)",
|
||||
.description = "Receive MIDI input",
|
||||
.type = CONFIG_BINARY,
|
||||
.default_string = "",
|
||||
.default_int = 1
|
||||
},
|
||||
{
|
||||
.name = "receive_input401",
|
||||
.description = "Receive input (MPU-401)",
|
||||
.description = "Receive MIDI input (MPU-401)",
|
||||
.type = CONFIG_BINARY,
|
||||
.default_string = "",
|
||||
.default_int = 0
|
||||
@@ -5468,7 +5468,7 @@ static const device_config_t ess_1688_config[] = {
|
||||
static const device_config_t ess_688_pnp_config[] = {
|
||||
{
|
||||
.name = "receive_input",
|
||||
.description = "Receive input (DSP MIDI)",
|
||||
.description = "Receive MIDI input",
|
||||
.type = CONFIG_BINARY,
|
||||
.default_string = "",
|
||||
.default_int = 1
|
||||
@@ -5487,14 +5487,14 @@ static const device_config_t ess_1688_pnp_config[] = {
|
||||
},
|
||||
{
|
||||
.name = "receive_input",
|
||||
.description = "Receive input (DSP MIDI)",
|
||||
.description = "Receive MIDI input",
|
||||
.type = CONFIG_BINARY,
|
||||
.default_string = "",
|
||||
.default_int = 1
|
||||
},
|
||||
{
|
||||
.name = "receive_input401",
|
||||
.description = "Receive input (MPU-401)",
|
||||
.description = "Receive MIDI input (MPU-401)",
|
||||
.type = CONFIG_BINARY,
|
||||
.default_string = "",
|
||||
.default_int = 0
|
||||
@@ -5950,5 +5950,3 @@ const device_t ess_chipchat_16_mca_device = {
|
||||
.force_redraw = NULL,
|
||||
.config = ess_1688_pnp_config
|
||||
};
|
||||
|
||||
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
%global romver 4.1
|
||||
|
||||
Name: 86Box
|
||||
Version: 4.2.2
|
||||
Version: 4.3
|
||||
Release: 1%{?dist}
|
||||
Summary: Classic PC emulator
|
||||
License: GPLv2+
|
||||
@@ -121,5 +121,5 @@ popd
|
||||
%{_datadir}/%{name}/roms
|
||||
|
||||
%changelog
|
||||
* Sat Aug 31 Jasmine Iwanek <jriwanek[AT]gmail.com> 4.2.2-1
|
||||
* Sat Aug 31 Jasmine Iwanek <jriwanek[AT]gmail.com> 4.3-1
|
||||
- Bump release
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
</categories>
|
||||
<launchable type="desktop-id">net.86box.86Box.desktop</launchable>
|
||||
<releases>
|
||||
<release version="4.2.2" date="2024-09-28"/>
|
||||
<release version="4.3" date="2024-11-13"/>
|
||||
</releases>
|
||||
<content_rating type="oars-1.1" />
|
||||
<description>
|
||||
|
||||
@@ -43,9 +43,7 @@
|
||||
#include <86box/vid_ati_mach8.h>
|
||||
#include "cpu.h"
|
||||
|
||||
#ifdef ATI_8514_ULTRA
|
||||
#define BIOS_MACH8_ROM_PATH "roms/video/mach8/11301113140.BIN"
|
||||
#endif
|
||||
#define BIOS_MACH8_ROM_PATH "roms/video/mach8/11301113140_4k.BIN"
|
||||
|
||||
static void ibm8514_accel_outb(uint16_t port, uint8_t val, void *priv);
|
||||
static void ibm8514_accel_outw(uint16_t port, uint16_t val, void *priv);
|
||||
@@ -98,14 +96,13 @@ ibm8514_log(const char *fmt, ...)
|
||||
} else { \
|
||||
temp = dev->vram[(dev->accel.dest + (cx) + (n)) & dev->vram_mask]; \
|
||||
temp |= (dev->vram[(dev->accel.dest + (cx) + (n + 1)) & dev->vram_mask] << 8); \
|
||||
}
|
||||
} \
|
||||
|
||||
#define READ(addr, dat) \
|
||||
if (dev->bpp) { \
|
||||
if (dev->bpp) \
|
||||
dat = vram_w[(addr) & (dev->vram_mask >> 1)]; \
|
||||
} else { \
|
||||
else \
|
||||
dat = (dev->vram[(addr) & (dev->vram_mask)]); \
|
||||
}
|
||||
|
||||
#define READ_HIGH(addr, dat) \
|
||||
dat |= (dev->vram[(addr) & (dev->vram_mask)] << 8);
|
||||
@@ -338,18 +335,21 @@ ibm8514_accel_out_fifo(svga_t *svga, uint16_t port, uint32_t val, int len)
|
||||
switch (port) {
|
||||
case 0x82e8:
|
||||
case 0xc2e8:
|
||||
dev->fifo_idx++;
|
||||
if (len == 2)
|
||||
dev->accel.cur_y = val & 0x7ff;
|
||||
break;
|
||||
|
||||
case 0x86e8:
|
||||
case 0xc6e8:
|
||||
dev->fifo_idx++;
|
||||
if (len == 2)
|
||||
dev->accel.cur_x = val & 0x7ff;
|
||||
break;
|
||||
|
||||
case 0x8ae8:
|
||||
case 0xcae8:
|
||||
dev->fifo_idx++;
|
||||
if (len == 2) {
|
||||
dev->accel.desty = val & 0x7ff;
|
||||
dev->accel.desty_axstp = val & 0x3fff;
|
||||
@@ -360,6 +360,7 @@ ibm8514_accel_out_fifo(svga_t *svga, uint16_t port, uint32_t val, int len)
|
||||
|
||||
case 0x8ee8:
|
||||
case 0xcee8:
|
||||
dev->fifo_idx++;
|
||||
if (len == 2) {
|
||||
dev->accel.destx = val & 0x7ff;
|
||||
dev->accel.destx_distp = val & 0x3fff;
|
||||
@@ -369,6 +370,7 @@ ibm8514_accel_out_fifo(svga_t *svga, uint16_t port, uint32_t val, int len)
|
||||
break;
|
||||
|
||||
case 0x92e8:
|
||||
dev->fifo_idx++;
|
||||
if (len == 2)
|
||||
dev->test = val;
|
||||
fallthrough;
|
||||
@@ -383,6 +385,7 @@ ibm8514_accel_out_fifo(svga_t *svga, uint16_t port, uint32_t val, int len)
|
||||
|
||||
case 0x96e8:
|
||||
case 0xd6e8:
|
||||
dev->fifo_idx++;
|
||||
if (len == 2) {
|
||||
dev->accel.maj_axis_pcnt = val & 0x7ff;
|
||||
dev->accel.maj_axis_pcnt_no_limit = val;
|
||||
@@ -391,15 +394,16 @@ ibm8514_accel_out_fifo(svga_t *svga, uint16_t port, uint32_t val, int len)
|
||||
|
||||
case 0x9ae8:
|
||||
case 0xdae8:
|
||||
dev->fifo_idx++;
|
||||
dev->accel.ssv_state = 0;
|
||||
if (len == 2) {
|
||||
dev->data_available = 0;
|
||||
dev->data_available2 = 0;
|
||||
dev->accel.cmd = val;
|
||||
if (port == 0xdae8) {
|
||||
if (dev->accel.cmd & 0x100)
|
||||
dev->accel.cmd_back = 0;
|
||||
}
|
||||
dev->accel.cmd_back = 1;
|
||||
if (dev->accel.cmd & 0x100)
|
||||
dev->accel.cmd_back = 0;
|
||||
|
||||
ibm8514_log("8514/A CMD=%04x, back=%d.\n", dev->accel.cmd, dev->accel.cmd_back);
|
||||
ibm8514_accel_start(-1, 0, -1, 0, svga, len);
|
||||
}
|
||||
@@ -407,6 +411,7 @@ ibm8514_accel_out_fifo(svga_t *svga, uint16_t port, uint32_t val, int len)
|
||||
|
||||
case 0x9ee8:
|
||||
case 0xdee8:
|
||||
dev->fifo_idx++;
|
||||
dev->accel.ssv_state = 1;
|
||||
if (len == 2) {
|
||||
dev->accel.short_stroke = val;
|
||||
@@ -431,6 +436,7 @@ ibm8514_accel_out_fifo(svga_t *svga, uint16_t port, uint32_t val, int len)
|
||||
|
||||
case 0xa2e8:
|
||||
case 0xe2e8:
|
||||
dev->fifo_idx++;
|
||||
if (port == 0xe2e8) {
|
||||
if (len == 2) {
|
||||
if (dev->accel.cmd_back)
|
||||
@@ -449,6 +455,7 @@ ibm8514_accel_out_fifo(svga_t *svga, uint16_t port, uint32_t val, int len)
|
||||
|
||||
case 0xa6e8:
|
||||
case 0xe6e8:
|
||||
dev->fifo_idx++;
|
||||
if (port == 0xe6e8) {
|
||||
if (len == 2) {
|
||||
if (dev->accel.cmd_back)
|
||||
@@ -467,38 +474,43 @@ ibm8514_accel_out_fifo(svga_t *svga, uint16_t port, uint32_t val, int len)
|
||||
|
||||
case 0xaae8:
|
||||
case 0xeae8:
|
||||
dev->fifo_idx++;
|
||||
if (len == 2)
|
||||
dev->accel.wrt_mask = val;
|
||||
break;
|
||||
|
||||
case 0xaee8:
|
||||
case 0xeee8:
|
||||
dev->fifo_idx++;
|
||||
if (len == 2)
|
||||
dev->accel.rd_mask = val;
|
||||
break;
|
||||
|
||||
case 0xb2e8:
|
||||
case 0xf2e8:
|
||||
dev->fifo_idx++;
|
||||
if (len == 2)
|
||||
dev->accel.color_cmp = val;
|
||||
break;
|
||||
|
||||
case 0xb6e8:
|
||||
case 0xf6e8:
|
||||
dev->fifo_idx++;
|
||||
dev->accel.bkgd_mix = val & 0xff;
|
||||
break;
|
||||
|
||||
case 0xbae8:
|
||||
case 0xfae8:
|
||||
dev->fifo_idx++;
|
||||
dev->accel.frgd_mix = val & 0xff;
|
||||
break;
|
||||
|
||||
case 0xbee8:
|
||||
case 0xfee8:
|
||||
dev->fifo_idx++;
|
||||
if (len == 2) {
|
||||
dev->accel.multifunc_cntl = val;
|
||||
dev->accel.multifunc[dev->accel.multifunc_cntl >> 12] = dev->accel.multifunc_cntl & 0xfff;
|
||||
dev->accel.cmd_back = !!(port == 0xfee8);
|
||||
|
||||
if ((dev->accel.multifunc_cntl >> 12) == 1) {
|
||||
dev->accel.clip_top = dev->accel.multifunc[1] & 0x3ff;
|
||||
@@ -603,7 +615,6 @@ void
|
||||
ibm8514_accel_out(uint16_t port, uint32_t val, svga_t *svga, int len)
|
||||
{
|
||||
ibm8514_t *dev = (ibm8514_t *) svga->dev8514;
|
||||
uint8_t old = 0;
|
||||
|
||||
if (port & 0x8000)
|
||||
ibm8514_accel_out_fifo(svga, port, val, len);
|
||||
@@ -689,32 +700,36 @@ ibm8514_accel_out(uint16_t port, uint32_t val, svga_t *svga, int len)
|
||||
break;
|
||||
|
||||
case 0x42e8:
|
||||
if (val & 1)
|
||||
dev->subsys_stat &= ~1;
|
||||
if (val & 2)
|
||||
dev->subsys_stat &= ~2;
|
||||
if (val & 4)
|
||||
dev->subsys_stat &= ~4;
|
||||
if (val & 8)
|
||||
dev->subsys_stat &= ~8;
|
||||
if (val & 0x01)
|
||||
dev->subsys_stat &= ~0x01;
|
||||
if (val & 0x02)
|
||||
dev->subsys_stat &= ~0x02;
|
||||
if (val & 0x04)
|
||||
dev->subsys_stat &= ~0x04;
|
||||
if (val & 0x08)
|
||||
dev->subsys_stat &= ~0x08;
|
||||
break;
|
||||
case 0x42e9:
|
||||
old = dev->subsys_cntl;
|
||||
dev->subsys_cntl = val;
|
||||
if ((old ^ val) & 1)
|
||||
dev->subsys_stat |= 1;
|
||||
if ((old ^ val) & 2)
|
||||
dev->subsys_stat |= 2;
|
||||
if ((old ^ val) & 4)
|
||||
dev->subsys_stat |= 4;
|
||||
if ((old ^ val) & 8)
|
||||
dev->subsys_stat |= 8;
|
||||
if (val & 0x01)
|
||||
dev->subsys_stat |= 0x01;
|
||||
if (val & 0x02)
|
||||
dev->subsys_stat |= 0x02;
|
||||
if (val & 0x04)
|
||||
dev->subsys_stat |= 0x04;
|
||||
if (val & 0x08)
|
||||
dev->subsys_stat |= 0x08;
|
||||
|
||||
if ((val & 0xc0) == 0xc0) {
|
||||
dev->fifo_idx = 0;
|
||||
dev->force_busy = 0;
|
||||
dev->force_busy2 = 0;
|
||||
}
|
||||
break;
|
||||
|
||||
case 0x4ae8:
|
||||
WRITE8(port, dev->accel.advfunc_cntl, val);
|
||||
dev->on = dev->accel.advfunc_cntl & 0x01;
|
||||
vga_on = !dev->on;
|
||||
ibm8514_log("[%04X:%08X]: IBM 8514/A: (0x%04x): ON=%d, shadow crt=%x, hdisp=%d, vdisp=%d.\n", CS, cpu_state.pc, port, dev->on, dev->accel.advfunc_cntl & 0x04, dev->hdisp, dev->vdisp);
|
||||
ibm8514_log("IBM mode set %s resolution.\n", (dev->accel.advfunc_cntl & 0x04) ? "2: 1024x768" : "1: 640x480");
|
||||
svga_recalctimings(svga);
|
||||
@@ -774,6 +789,22 @@ ibm8514_accel_in_fifo(svga_t *svga, uint16_t port, int len)
|
||||
|
||||
case 0x9ae8:
|
||||
case 0xdae8:
|
||||
if ((dev->fifo_idx >= 1) && (dev->fifo_idx <= 8)) {
|
||||
temp |= (1 << (dev->fifo_idx - 1));
|
||||
switch (dev->accel.cmd >> 13) {
|
||||
case 2:
|
||||
case 3:
|
||||
case 4:
|
||||
case 6:
|
||||
if (dev->accel.sy < 0)
|
||||
dev->fifo_idx = 0;
|
||||
break;
|
||||
default:
|
||||
if (!dev->accel.sy)
|
||||
dev->fifo_idx = 0;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (len == 2) {
|
||||
if (dev->force_busy)
|
||||
temp |= 0x200; /*Hardware busy*/
|
||||
@@ -788,10 +819,10 @@ ibm8514_accel_in_fifo(svga_t *svga, uint16_t port, int len)
|
||||
case 0xdae9:
|
||||
if (len == 1) {
|
||||
if (dev->force_busy2)
|
||||
temp |= 2; /*Hardware busy*/
|
||||
temp |= 0x02; /*Hardware busy*/
|
||||
dev->force_busy2 = 0;
|
||||
if (dev->data_available2) {
|
||||
temp |= 1; /*Read Data available*/
|
||||
temp |= 0x01; /*Read Data available*/
|
||||
dev->data_available2 = 0;
|
||||
}
|
||||
}
|
||||
@@ -826,13 +857,18 @@ ibm8514_accel_in_fifo(svga_t *svga, uint16_t port, int len)
|
||||
uint8_t
|
||||
ibm8514_accel_in(uint16_t port, svga_t *svga)
|
||||
{
|
||||
ibm8514_t *dev = (ibm8514_t *) svga->dev8514;
|
||||
uint8_t temp = 0;
|
||||
ibm8514_t *dev = (ibm8514_t *) svga->dev8514;
|
||||
uint8_t temp = 0;
|
||||
int16_t clip_t = dev->accel.clip_top;
|
||||
int16_t clip_l = dev->accel.clip_left;
|
||||
uint16_t clip_b_ibm = dev->accel.clip_bottom;
|
||||
uint16_t clip_r_ibm = dev->accel.clip_right;
|
||||
int cmd = dev->accel.cmd >> 13;
|
||||
|
||||
switch (port) {
|
||||
case 0x2e8:
|
||||
if (dev->vc == dev->v_syncstart)
|
||||
temp |= 2;
|
||||
temp |= 0x02;
|
||||
|
||||
ibm8514_log("0x2E8 read: Display Status=%02x.\n", temp);
|
||||
break;
|
||||
@@ -860,12 +896,31 @@ ibm8514_accel_in(uint16_t port, svga_t *svga)
|
||||
case 0x42e8:
|
||||
case 0x42e9:
|
||||
if (dev->vc == dev->v_syncstart)
|
||||
dev->subsys_stat |= 1;
|
||||
dev->subsys_stat |= 0x01;
|
||||
|
||||
if (cmd == 6) {
|
||||
if ((dev->accel.dx >= clip_l) &&
|
||||
(dev->accel.dx <= clip_r_ibm) &&
|
||||
(dev->accel.dy >= clip_t) &&
|
||||
(dev->accel.dy <= clip_b_ibm))
|
||||
dev->subsys_stat |= 0x02;
|
||||
} else {
|
||||
if ((dev->accel.cx >= clip_l) &&
|
||||
(dev->accel.cx <= clip_r_ibm) &&
|
||||
(dev->accel.cy >= clip_t) &&
|
||||
(dev->accel.cy <= clip_b_ibm))
|
||||
dev->subsys_stat |= 0x02;
|
||||
}
|
||||
|
||||
if (!dev->fifo_idx) {
|
||||
if (!dev->force_busy && !dev->force_busy2)
|
||||
temp |= 0x08;
|
||||
}
|
||||
|
||||
if (port & 1)
|
||||
temp = dev->vram_512k_8514 ? 0x00 : 0x80;
|
||||
else {
|
||||
temp |= (dev->subsys_stat | 0x80);
|
||||
temp |= (dev->subsys_stat | (dev->vram_512k_8514 ? 0x00 : 0x80));
|
||||
temp |= 0x20;
|
||||
}
|
||||
break;
|
||||
@@ -916,6 +971,8 @@ ibm8514_short_stroke_start(int count, int cpu_input, uint32_t mix_dat, uint32_t
|
||||
dev->accel.ssv_draw = ssv & 0x10;
|
||||
|
||||
if (ibm8514_cpu_src(svga)) {
|
||||
dev->data_available = 0;
|
||||
dev->data_available2 = 0;
|
||||
return; /*Wait for data from CPU*/
|
||||
}
|
||||
}
|
||||
@@ -1126,8 +1183,10 @@ ibm8514_accel_start(int count, int cpu_input, uint32_t mix_dat, uint32_t cpu_dat
|
||||
else
|
||||
cpu_dat >>= 8;
|
||||
|
||||
if (!dev->accel.ssv_len)
|
||||
if (!dev->accel.ssv_len) {
|
||||
dev->accel.cmd_back = 1;
|
||||
break;
|
||||
}
|
||||
|
||||
switch (dev->accel.ssv_dir & 0xe0) {
|
||||
case 0x00:
|
||||
@@ -1219,73 +1278,39 @@ ibm8514_accel_start(int count, int cpu_input, uint32_t mix_dat, uint32_t cpu_dat
|
||||
else
|
||||
cpu_dat >>= 8;
|
||||
|
||||
if (!dev->accel.ssv_len)
|
||||
if (!dev->accel.ssv_len) {
|
||||
dev->accel.cmd_back = 1;
|
||||
break;
|
||||
}
|
||||
|
||||
if (dev->accel.err_term >= dev->accel.maj_axis_pcnt) {
|
||||
dev->accel.err_term += dev->accel.destx_distp;
|
||||
/*Step minor axis*/
|
||||
switch (dev->accel.cmd & 0xe0) {
|
||||
case 0x00:
|
||||
dev->accel.cy--;
|
||||
break;
|
||||
case 0x20:
|
||||
dev->accel.cy--;
|
||||
break;
|
||||
case 0x40:
|
||||
dev->accel.cx--;
|
||||
break;
|
||||
case 0x60:
|
||||
dev->accel.cx++;
|
||||
break;
|
||||
case 0x80:
|
||||
dev->accel.cy++;
|
||||
break;
|
||||
case 0xa0:
|
||||
dev->accel.cy++;
|
||||
break;
|
||||
case 0xc0:
|
||||
dev->accel.cx--;
|
||||
break;
|
||||
case 0xe0:
|
||||
dev->accel.cx++;
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
} else
|
||||
dev->accel.err_term += dev->accel.desty_axstp;
|
||||
|
||||
/*Step major axis*/
|
||||
switch (dev->accel.cmd & 0xe0) {
|
||||
case 0x00:
|
||||
dev->accel.cx--;
|
||||
break;
|
||||
case 0x20:
|
||||
dev->accel.cx++;
|
||||
break;
|
||||
case 0x40:
|
||||
dev->accel.cy--;
|
||||
break;
|
||||
case 0x60:
|
||||
dev->accel.cy--;
|
||||
break;
|
||||
case 0x80:
|
||||
dev->accel.cx--;
|
||||
break;
|
||||
case 0xa0:
|
||||
dev->accel.cx++;
|
||||
break;
|
||||
case 0xc0:
|
||||
if (dev->accel.cmd & 0x40) {
|
||||
if (dev->accel.cmd & 0x80)
|
||||
dev->accel.cy++;
|
||||
break;
|
||||
case 0xe0:
|
||||
dev->accel.cy++;
|
||||
break;
|
||||
else
|
||||
dev->accel.cy--;
|
||||
|
||||
default:
|
||||
break;
|
||||
if (dev->accel.err_term >= 0) {
|
||||
dev->accel.err_term += dev->accel.destx_distp;
|
||||
if (dev->accel.cmd & 0x20)
|
||||
dev->accel.cx++;
|
||||
else
|
||||
dev->accel.cx--;
|
||||
} else
|
||||
dev->accel.err_term += dev->accel.desty_axstp;
|
||||
} else {
|
||||
if (dev->accel.cmd & 0x20)
|
||||
dev->accel.cx++;
|
||||
else
|
||||
dev->accel.cx--;
|
||||
|
||||
if (dev->accel.err_term >= 0) {
|
||||
dev->accel.err_term += dev->accel.destx_distp;
|
||||
if (dev->accel.cmd & 0x80)
|
||||
dev->accel.cy++;
|
||||
else
|
||||
dev->accel.cy--;
|
||||
} else
|
||||
dev->accel.err_term += dev->accel.desty_axstp;
|
||||
}
|
||||
|
||||
dev->accel.ssv_len--;
|
||||
@@ -1427,8 +1452,10 @@ ibm8514_accel_start(int count, int cpu_input, uint32_t mix_dat, uint32_t cpu_dat
|
||||
}
|
||||
}
|
||||
|
||||
if (!dev->accel.sy)
|
||||
if (!dev->accel.sy) {
|
||||
dev->accel.cmd_back = 1;
|
||||
break;
|
||||
}
|
||||
|
||||
if (dev->accel.output)
|
||||
mix_dat >>= 1;
|
||||
@@ -1542,8 +1569,10 @@ ibm8514_accel_start(int count, int cpu_input, uint32_t mix_dat, uint32_t cpu_dat
|
||||
else
|
||||
cpu_dat >>= 8;
|
||||
|
||||
if (dev->accel.sy == 0)
|
||||
if (!dev->accel.sy) {
|
||||
dev->accel.cmd_back = 1;
|
||||
break;
|
||||
}
|
||||
|
||||
if (dev->accel.cmd & 0x40) {
|
||||
if (dev->accel.cmd & 0x80)
|
||||
@@ -1642,8 +1671,10 @@ ibm8514_accel_start(int count, int cpu_input, uint32_t mix_dat, uint32_t cpu_dat
|
||||
else
|
||||
cpu_dat >>= 8;
|
||||
|
||||
if (dev->accel.sy == 0)
|
||||
if (!dev->accel.sy) {
|
||||
dev->accel.cmd_back = 1;
|
||||
break;
|
||||
}
|
||||
|
||||
if (dev->accel.cmd & 0x40) {
|
||||
if (dev->accel.cmd & 0x80)
|
||||
@@ -1917,6 +1948,9 @@ skip_vector_rect_write:
|
||||
|
||||
dev->accel.sy--;
|
||||
dev->accel.x_count = 0;
|
||||
|
||||
if (dev->accel.sy < 0)
|
||||
dev->accel.cmd_back = 1;
|
||||
return;
|
||||
}
|
||||
}
|
||||
@@ -2072,6 +2106,9 @@ skip_nibble_rect_write:
|
||||
|
||||
dev->accel.sy--;
|
||||
dev->accel.x_count = 0;
|
||||
|
||||
if (dev->accel.sy < 0)
|
||||
dev->accel.cmd_back = 1;
|
||||
return;
|
||||
}
|
||||
}
|
||||
@@ -2154,6 +2191,9 @@ skip_nibble_rect_write:
|
||||
dev->accel.dest = (dev->accel.ge_offset << 2) + (dev->accel.cy * dev->pitch);
|
||||
|
||||
dev->accel.sy--;
|
||||
|
||||
if (dev->accel.sy < 0)
|
||||
dev->accel.cmd_back = 1;
|
||||
return;
|
||||
}
|
||||
}
|
||||
@@ -2236,6 +2276,7 @@ skip_nibble_rect_write:
|
||||
dev->accel.cur_x = dev->accel.cx;
|
||||
dev->accel.cur_y = dev->accel.cy;
|
||||
}
|
||||
dev->accel.cmd_back = 1;
|
||||
return;
|
||||
}
|
||||
}
|
||||
@@ -2314,13 +2355,14 @@ skip_nibble_rect_write:
|
||||
|
||||
if (dev->accel.sy < 0) {
|
||||
ibm8514_log(".\n");
|
||||
dev->accel.cmd_back = 1;
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
ibm8514_log("Polygon Draw Type=%02x, CL=%d, CR=%d.\n", dev->accel.multifunc[0x0a] & 0x06, clip_l, clip_r);
|
||||
while (count-- && dev->accel.sy >= 0) {
|
||||
ibm8514_log("Polygon Draw Type=%02x, CX=%d, CY=%d, SY=%d, CL=%d, CR=%d.\n", dev->accel.multifunc[0x0a] & 0x06, dev->accel.cx, dev->accel.cy, dev->accel.sy, clip_l, clip_r);
|
||||
while (count-- && (dev->accel.sy >= 0)) {
|
||||
if ((dev->accel.cx >= clip_l) &&
|
||||
(dev->accel.cx <= clip_r) &&
|
||||
(dev->accel.cy >= clip_t) &&
|
||||
@@ -2399,6 +2441,7 @@ skip_nibble_rect_write:
|
||||
dev->accel.cur_x = dev->accel.cx;
|
||||
dev->accel.cur_y = dev->accel.cy;
|
||||
}
|
||||
dev->accel.cmd_back = 1;
|
||||
return;
|
||||
}
|
||||
}
|
||||
@@ -2499,8 +2542,10 @@ skip_nibble_rect_write:
|
||||
else
|
||||
cpu_dat >>= 8;
|
||||
|
||||
if (!dev->accel.sy)
|
||||
if (!dev->accel.sy) {
|
||||
dev->accel.cmd_back = 1;
|
||||
break;
|
||||
}
|
||||
|
||||
switch (dev->accel.cmd & 0xe0) {
|
||||
case 0x00:
|
||||
@@ -2601,8 +2646,10 @@ skip_nibble_rect_write:
|
||||
else
|
||||
cpu_dat >>= 8;
|
||||
|
||||
if (!dev->accel.sy)
|
||||
if (!dev->accel.sy) {
|
||||
dev->accel.cmd_back = 1;
|
||||
break;
|
||||
}
|
||||
|
||||
if (dev->accel.cmd & 0x40) {
|
||||
dev->accel.oldcy = dev->accel.cy;
|
||||
@@ -2856,6 +2903,9 @@ skip_nibble_bitblt_write:
|
||||
|
||||
dev->accel.sy--;
|
||||
dev->accel.x_count = 0;
|
||||
|
||||
if (dev->accel.sy < 0)
|
||||
dev->accel.cmd_back = 1;
|
||||
return;
|
||||
}
|
||||
}
|
||||
@@ -2953,6 +3003,9 @@ skip_nibble_bitblt_write:
|
||||
}
|
||||
|
||||
dev->accel.sy--;
|
||||
|
||||
if (dev->accel.sy < 0)
|
||||
dev->accel.cmd_back = 1;
|
||||
return;
|
||||
}
|
||||
}
|
||||
@@ -3047,6 +3100,7 @@ skip_nibble_bitblt_write:
|
||||
if (dev->accel.sy < 0) {
|
||||
dev->accel.destx = dev->accel.dx;
|
||||
dev->accel.desty = dev->accel.dy;
|
||||
dev->accel.cmd_back = 1;
|
||||
return;
|
||||
}
|
||||
}
|
||||
@@ -3076,8 +3130,10 @@ skip_nibble_bitblt_write:
|
||||
dx++;
|
||||
|
||||
dev->accel.sx--;
|
||||
if (dev->accel.sx < 0)
|
||||
if (dev->accel.sx < 0) {
|
||||
dev->accel.cmd_back = 1;
|
||||
return;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
while (count-- && dev->accel.sy >= 0) {
|
||||
@@ -3187,6 +3243,7 @@ skip_nibble_bitblt_write:
|
||||
if (dev->accel.sy < 0) {
|
||||
dev->accel.destx = dev->accel.dx;
|
||||
dev->accel.desty = dev->accel.dy;
|
||||
dev->accel.cmd_back = 1;
|
||||
return;
|
||||
}
|
||||
}
|
||||
@@ -3239,16 +3296,16 @@ ibm8514_render_8bpp(svga_t *svga)
|
||||
|
||||
for (int x = 0; x <= dev->h_disp; x += 8) {
|
||||
dat = *(uint32_t *) (&dev->vram[dev->ma & dev->vram_mask]);
|
||||
p[0] = dev->pallook[dat & dev->dac_mask];
|
||||
p[1] = dev->pallook[(dat >> 8) & dev->dac_mask];
|
||||
p[2] = dev->pallook[(dat >> 16) & dev->dac_mask];
|
||||
p[3] = dev->pallook[(dat >> 24) & dev->dac_mask];
|
||||
p[0] = dev->pallook[dat & dev->dac_mask & 0xff];
|
||||
p[1] = dev->pallook[(dat >> 8) & dev->dac_mask & 0xff];
|
||||
p[2] = dev->pallook[(dat >> 16) & dev->dac_mask & 0xff];
|
||||
p[3] = dev->pallook[(dat >> 24) & dev->dac_mask & 0xff];
|
||||
|
||||
dat = *(uint32_t *) (&dev->vram[(dev->ma + 4) & dev->vram_mask]);
|
||||
p[4] = dev->pallook[dat & dev->dac_mask];
|
||||
p[5] = dev->pallook[(dat >> 8) & dev->dac_mask];
|
||||
p[6] = dev->pallook[(dat >> 16) & dev->dac_mask];
|
||||
p[7] = dev->pallook[(dat >> 24) & dev->dac_mask];
|
||||
p[4] = dev->pallook[dat & dev->dac_mask & 0xff];
|
||||
p[5] = dev->pallook[(dat >> 8) & dev->dac_mask & 0xff];
|
||||
p[6] = dev->pallook[(dat >> 16) & dev->dac_mask & 0xff];
|
||||
p[7] = dev->pallook[(dat >> 24) & dev->dac_mask & 0xff];
|
||||
|
||||
dev->ma += 8;
|
||||
p += 8;
|
||||
@@ -3265,9 +3322,8 @@ ibm8514_render_15bpp(svga_t *svga)
|
||||
uint32_t *p;
|
||||
uint32_t dat;
|
||||
|
||||
if ((dev->displine + svga->y_add) < 0) {
|
||||
if ((dev->displine + svga->y_add) < 0)
|
||||
return;
|
||||
}
|
||||
|
||||
if (dev->changedvram[dev->ma >> 12] || dev->changedvram[(dev->ma >> 12) + 1] || svga->fullchange) {
|
||||
p = &buffer32->line[dev->displine + svga->y_add][svga->x_add];
|
||||
@@ -3306,9 +3362,8 @@ ibm8514_render_16bpp(svga_t *svga)
|
||||
uint32_t *p;
|
||||
uint32_t dat;
|
||||
|
||||
if ((dev->displine + svga->y_add) < 0) {
|
||||
if ((dev->displine + svga->y_add) < 0)
|
||||
return;
|
||||
}
|
||||
|
||||
if (dev->changedvram[dev->ma >> 12] || dev->changedvram[(dev->ma >> 12) + 1] || svga->fullchange) {
|
||||
p = &buffer32->line[dev->displine + svga->y_add][svga->x_add];
|
||||
@@ -3652,13 +3707,10 @@ ibm8514_recalctimings(svga_t *svga)
|
||||
ibm8514_t *dev = (ibm8514_t *) svga->dev8514;
|
||||
|
||||
svga->render8514 = ibm8514_render_blank;
|
||||
#ifdef ATI_8514_ULTRA
|
||||
if (dev->extensions) {
|
||||
if (svga->ext8514 != NULL)
|
||||
ati8514_recalctimings(svga);
|
||||
} else
|
||||
#endif
|
||||
{
|
||||
} else {
|
||||
if (dev->on) {
|
||||
dev->h_total = dev->htotal + 1;
|
||||
dev->rowcount = !!(dev->disp_cntl & 0x08);
|
||||
@@ -3692,7 +3744,6 @@ ibm8514_recalctimings(svga_t *svga)
|
||||
|
||||
dev->pitch = 1024;
|
||||
dev->rowoffset = 0x80;
|
||||
svga->map8 = dev->pallook;
|
||||
if (dev->vram_512k_8514) {
|
||||
if (dev->h_disp == 640)
|
||||
dev->pitch = 640;
|
||||
@@ -3745,12 +3796,9 @@ ibm8514_mca_reset(void *priv)
|
||||
|
||||
ibm8514_log("MCA reset.\n");
|
||||
dev->on = 0;
|
||||
vga_on = 1;
|
||||
#ifdef ATI_8514_ULTRA
|
||||
if (dev->extensions)
|
||||
ati8514_mca_write(0x102, 0, svga);
|
||||
else
|
||||
#endif
|
||||
ibm8514_mca_write(0x102, 0, svga);
|
||||
|
||||
timer_set_callback(&svga->timer, svga_poll);
|
||||
@@ -3759,9 +3807,8 @@ ibm8514_mca_reset(void *priv)
|
||||
static void *
|
||||
ibm8514_init(const device_t *info)
|
||||
{
|
||||
#ifdef ATI_8514_ULTRA
|
||||
uint32_t bios_addr = 0;
|
||||
#endif
|
||||
uint16_t bios_rom_eeprom = 0x0000;
|
||||
|
||||
if (svga_get_pri() == NULL)
|
||||
return NULL;
|
||||
@@ -3785,9 +3832,10 @@ ibm8514_init(const device_t *info)
|
||||
dev->type = info->flags;
|
||||
dev->bpp = 0;
|
||||
|
||||
#ifdef ATI_8514_ULTRA
|
||||
dev->extensions = device_get_config_int("extensions");
|
||||
bios_addr = device_get_config_hex20("bios_addr");
|
||||
if (dev->type & DEVICE_MCA)
|
||||
bios_addr = 0xc6000;
|
||||
|
||||
switch (dev->extensions) {
|
||||
case 1:
|
||||
@@ -3795,34 +3843,28 @@ ibm8514_init(const device_t *info)
|
||||
mach_t * mach = (mach_t *) calloc(1, sizeof(mach_t));
|
||||
svga->ext8514 = mach;
|
||||
|
||||
rom_init(&dev->bios_rom,
|
||||
BIOS_MACH8_ROM_PATH,
|
||||
bios_addr, 0x1000, 0xfff,
|
||||
0, MEM_MAPPING_EXTERNAL);
|
||||
|
||||
ati8514_init(svga, svga->ext8514, svga->dev8514);
|
||||
mach->accel.scratch0 = ((((bios_addr >> 7) - 0x1000) >> 4));
|
||||
bios_rom_eeprom = mach->accel.scratch0;
|
||||
if (dev->type & DEVICE_MCA) {
|
||||
rom_init(&dev->bios_rom,
|
||||
BIOS_MACH8_ROM_PATH,
|
||||
0xc6000, 0x2000, 0x1fff,
|
||||
0, MEM_MAPPING_EXTERNAL);
|
||||
dev->pos_regs[0] = 0x88;
|
||||
dev->pos_regs[1] = 0x80;
|
||||
mach->eeprom.data[0] = 0x0000;
|
||||
mach->eeprom.data[1] = bios_rom_eeprom | ((bios_rom_eeprom | 0x01) << 8);
|
||||
mca_add(ati8514_mca_read, ati8514_mca_write, ibm8514_mca_feedb, ibm8514_mca_reset, svga);
|
||||
ati_eeprom_load(&mach->eeprom, "ati8514_mca.nvr", 0);
|
||||
ati_eeprom_load_mach8(&mach->eeprom, "ati8514_mca.nvr", 1);
|
||||
mem_mapping_disable(&dev->bios_rom.mapping);
|
||||
} else {
|
||||
rom_init(&dev->bios_rom,
|
||||
BIOS_MACH8_ROM_PATH,
|
||||
bios_addr, 0x1000, 0xfff,
|
||||
0, MEM_MAPPING_EXTERNAL);
|
||||
rom_init(&dev->bios_rom2,
|
||||
BIOS_MACH8_ROM_PATH,
|
||||
bios_addr + 0x1000, 0x800, 0x7ff,
|
||||
0x1000, MEM_MAPPING_EXTERNAL);
|
||||
ati_eeprom_load(&mach->eeprom, "ati8514.nvr", 0);
|
||||
mach->accel.scratch0 = (((bios_addr >> 7) - 0x1000) >> 4);
|
||||
mach->accel.scratch1 = mach->accel.scratch0 - 0x80;
|
||||
}
|
||||
ati8514_init(svga, svga->ext8514, svga->dev8514);
|
||||
} else
|
||||
ati_eeprom_load_mach8(&mach->eeprom, "ati8514.nvr", 0);
|
||||
break;
|
||||
}
|
||||
fallthrough;
|
||||
|
||||
fallthrough;
|
||||
default:
|
||||
ibm8514_io_set(svga);
|
||||
|
||||
@@ -3833,16 +3875,6 @@ ibm8514_init(const device_t *info)
|
||||
}
|
||||
break;
|
||||
}
|
||||
#else
|
||||
ibm8514_io_set(svga);
|
||||
|
||||
if (dev->type & DEVICE_MCA) {
|
||||
dev->pos_regs[0] = 0x7f;
|
||||
dev->pos_regs[1] = 0xef;
|
||||
mca_add(ibm8514_mca_read, ibm8514_mca_write, ibm8514_mca_feedb, ibm8514_mca_reset, svga);
|
||||
}
|
||||
#endif
|
||||
|
||||
return svga;
|
||||
}
|
||||
|
||||
@@ -3851,13 +3883,10 @@ ibm8514_close(void *priv)
|
||||
{
|
||||
svga_t *svga = (svga_t *) priv;
|
||||
ibm8514_t *dev = (ibm8514_t *) svga->dev8514;
|
||||
|
||||
#ifdef ATI_8514_ULTRA
|
||||
mach_t *mach = (mach_t *) svga->ext8514;
|
||||
|
||||
if (mach)
|
||||
free(mach);
|
||||
#endif
|
||||
|
||||
if (dev) {
|
||||
free(dev->vram);
|
||||
@@ -3883,9 +3912,8 @@ ibm8514_force_redraw(void *priv)
|
||||
svga->fullchange = changeframecount;
|
||||
}
|
||||
|
||||
#ifdef ATI_8514_ULTRA
|
||||
// clang-format off
|
||||
static const device_config_t ext8514_config[] = {
|
||||
static const device_config_t isa_ext8514_config[] = {
|
||||
{
|
||||
.name = "memory",
|
||||
.description = "Memory size",
|
||||
@@ -3893,7 +3921,7 @@ static const device_config_t ext8514_config[] = {
|
||||
.default_int = 1024,
|
||||
.selection = {
|
||||
{
|
||||
.description = "512 KB",
|
||||
.description = "512 kB",
|
||||
.value = 512
|
||||
},
|
||||
{
|
||||
@@ -3926,7 +3954,7 @@ static const device_config_t ext8514_config[] = {
|
||||
},
|
||||
{
|
||||
.name = "bios_addr",
|
||||
.description = "BIOS address",
|
||||
.description = "BIOS Address",
|
||||
.type = CONFIG_HEX20,
|
||||
.default_string = "",
|
||||
.default_int = 0xc8000,
|
||||
@@ -3952,9 +3980,9 @@ static const device_config_t ext8514_config[] = {
|
||||
.type = CONFIG_END
|
||||
}
|
||||
};
|
||||
#else
|
||||
|
||||
// clang-format off
|
||||
static const device_config_t ext8514_config[] = {
|
||||
static const device_config_t mca_ext8514_config[] = {
|
||||
{
|
||||
.name = "memory",
|
||||
.description = "Memory size",
|
||||
@@ -3962,7 +3990,7 @@ static const device_config_t ext8514_config[] = {
|
||||
.default_int = 1024,
|
||||
.selection = {
|
||||
{
|
||||
.description = "512 KB",
|
||||
.description = "512 kB",
|
||||
.value = 512
|
||||
},
|
||||
{
|
||||
@@ -3974,11 +4002,29 @@ static const device_config_t ext8514_config[] = {
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
.name = "extensions",
|
||||
.description = "Vendor",
|
||||
.type = CONFIG_SELECTION,
|
||||
.default_int = 0,
|
||||
.selection = {
|
||||
{
|
||||
.description = "IBM",
|
||||
.value = 0
|
||||
},
|
||||
{
|
||||
.description = "ATI",
|
||||
.value = 1
|
||||
},
|
||||
{
|
||||
.description = ""
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
.type = CONFIG_END
|
||||
}
|
||||
};
|
||||
#endif
|
||||
|
||||
// clang-format off
|
||||
const device_t gen8514_isa_device = {
|
||||
@@ -3992,7 +4038,7 @@ const device_t gen8514_isa_device = {
|
||||
{ .available = NULL },
|
||||
.speed_changed = ibm8514_speed_changed,
|
||||
.force_redraw = ibm8514_force_redraw,
|
||||
.config = ext8514_config
|
||||
.config = isa_ext8514_config
|
||||
};
|
||||
|
||||
const device_t ibm8514_mca_device = {
|
||||
@@ -4006,7 +4052,7 @@ const device_t ibm8514_mca_device = {
|
||||
{ .available = NULL },
|
||||
.speed_changed = ibm8514_speed_changed,
|
||||
.force_redraw = ibm8514_force_redraw,
|
||||
.config = ext8514_config
|
||||
.config = mca_ext8514_config
|
||||
};
|
||||
|
||||
|
||||
|
||||
@@ -43,11 +43,12 @@ ati_eeprom_load(ati_eeprom_t *eeprom, char *fn, int type)
|
||||
}
|
||||
if (fread(eeprom->data, 1, size, fp) != size)
|
||||
memset(eeprom->data, 0, size);
|
||||
|
||||
fclose(fp);
|
||||
}
|
||||
|
||||
void
|
||||
ati_eeprom_load_mach8(ati_eeprom_t *eeprom, char *fn)
|
||||
ati_eeprom_load_mach8(ati_eeprom_t *eeprom, char *fn, int mca)
|
||||
{
|
||||
FILE *fp;
|
||||
int size;
|
||||
@@ -55,14 +56,43 @@ ati_eeprom_load_mach8(ati_eeprom_t *eeprom, char *fn)
|
||||
strncpy(eeprom->fn, fn, sizeof(eeprom->fn) - 1);
|
||||
fp = nvr_fopen(eeprom->fn, "rb");
|
||||
size = 128;
|
||||
if (!fp) { /*The ATI Graphics Ultra bios expects an immediate write to nvram if none is present at boot time otherwise
|
||||
if (!fp) {
|
||||
if (mca) {
|
||||
(void) fseek(fp, 2L, SEEK_SET);
|
||||
memset(eeprom->data + 2, 0xff, size - 2);
|
||||
fp = nvr_fopen(eeprom->fn, "wb");
|
||||
fwrite(eeprom->data, 1, size, fp);
|
||||
fclose(fp);
|
||||
} else
|
||||
memset(eeprom->data, 0xff, size);
|
||||
return;
|
||||
}
|
||||
if (fread(eeprom->data, 1, size, fp) != size)
|
||||
memset(eeprom->data, 0, size);
|
||||
|
||||
fclose(fp);
|
||||
}
|
||||
|
||||
void
|
||||
ati_eeprom_load_mach8_vga(ati_eeprom_t *eeprom, char *fn)
|
||||
{
|
||||
FILE *fp;
|
||||
int size;
|
||||
eeprom->type = 0;
|
||||
strncpy(eeprom->fn, fn, sizeof(eeprom->fn) - 1);
|
||||
fp = nvr_fopen(eeprom->fn, "rb");
|
||||
size = 128;
|
||||
if (!fp) { /*The ATI Graphics Ultra bios expects a fresh nvram zero'ed at boot time otherwise
|
||||
it would hang the machine.*/
|
||||
memset(eeprom->data, 0, size);
|
||||
fp = nvr_fopen(eeprom->fn, "wb");
|
||||
fwrite(eeprom->data, 1, size, fp);
|
||||
fclose(fp);
|
||||
return;
|
||||
}
|
||||
if (fread(eeprom->data, 1, size, fp) != size)
|
||||
memset(eeprom->data, 0, size);
|
||||
|
||||
fclose(fp);
|
||||
}
|
||||
|
||||
@@ -79,9 +109,9 @@ ati_eeprom_save(ati_eeprom_t *eeprom)
|
||||
void
|
||||
ati_eeprom_write(ati_eeprom_t *eeprom, int ena, int clk, int dat)
|
||||
{
|
||||
if (!ena) {
|
||||
if (!ena)
|
||||
eeprom->out = 1;
|
||||
}
|
||||
|
||||
if (clk && !eeprom->oldclk) {
|
||||
if (ena && !eeprom->oldena) {
|
||||
eeprom->state = EEPROM_WAIT;
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -4549,7 +4549,7 @@ static const device_config_t gd542x_config[] = {
|
||||
.type = CONFIG_SELECTION,
|
||||
.selection = {
|
||||
{
|
||||
.description = "512 KB",
|
||||
.description = "512 kB",
|
||||
.value = 512
|
||||
},
|
||||
{
|
||||
@@ -4574,7 +4574,7 @@ static const device_config_t gd5426_config[] = {
|
||||
.type = CONFIG_SELECTION,
|
||||
.selection = {
|
||||
{
|
||||
.description = "512 KB",
|
||||
.description = "512 kB",
|
||||
.value = 512
|
||||
},
|
||||
{
|
||||
@@ -4599,11 +4599,11 @@ static const device_config_t gd5426_config[] = {
|
||||
static const device_config_t gd5428_onboard_config[] = {
|
||||
{
|
||||
.name = "memory",
|
||||
.description = "Onboard memory size",
|
||||
.description = "Memory size",
|
||||
.type = CONFIG_SELECTION,
|
||||
.selection = {
|
||||
{
|
||||
.description = "512 KB",
|
||||
.description = "512 kB",
|
||||
.value = 512
|
||||
},
|
||||
{
|
||||
@@ -4653,7 +4653,7 @@ static const device_config_t gd5429_config[] = {
|
||||
static const device_config_t gd5440_onboard_config[] = {
|
||||
{
|
||||
.name = "memory",
|
||||
.description = "Onboard memory size",
|
||||
.description = "Memory size",
|
||||
.type = CONFIG_SELECTION,
|
||||
.selection = {
|
||||
{
|
||||
@@ -4707,7 +4707,7 @@ static const device_config_t gd5434_config[] = {
|
||||
static const device_config_t gd5434_onboard_config[] = {
|
||||
{
|
||||
.name = "memory",
|
||||
.description = "Onboard memory size",
|
||||
.description = "Memory size",
|
||||
.type = CONFIG_SELECTION,
|
||||
.selection = {
|
||||
{
|
||||
|
||||
@@ -553,9 +553,9 @@ static const device_config_t et3000_config[] = {
|
||||
.type = CONFIG_SELECTION,
|
||||
.default_int = 512,
|
||||
.selection = {
|
||||
{ .description = "256 KB",
|
||||
{ .description = "256 kB",
|
||||
.value = 256 },
|
||||
{ .description = "512 KB",
|
||||
{ .description = "512 kB",
|
||||
.value = 512 },
|
||||
{ .description = "" } } },
|
||||
{ .type = CONFIG_END }
|
||||
|
||||
@@ -949,11 +949,11 @@ static const device_config_t et4000_tc6058af_config[] = {
|
||||
.default_int = 512,
|
||||
.selection = {
|
||||
{
|
||||
.description = "256 KB",
|
||||
.description = "256 kB",
|
||||
.value = 256
|
||||
},
|
||||
{
|
||||
.description = "512 KB",
|
||||
.description = "512 kB",
|
||||
.value = 512
|
||||
},
|
||||
{
|
||||
@@ -967,7 +967,7 @@ static const device_config_t et4000_tc6058af_config[] = {
|
||||
},
|
||||
{
|
||||
.name = "bios_ver",
|
||||
.description = "BIOS Version",
|
||||
.description = "BIOS Revision",
|
||||
.type = CONFIG_BIOS,
|
||||
.default_string = "v1_10",
|
||||
.default_int = 0,
|
||||
@@ -996,11 +996,11 @@ static const device_config_t et4000_bios_config[] = {
|
||||
.default_int = 1024,
|
||||
.selection = {
|
||||
{
|
||||
.description = "256 KB",
|
||||
.description = "256 kB",
|
||||
.value = 256
|
||||
},
|
||||
{
|
||||
.description = "512 KB",
|
||||
.description = "512 kB",
|
||||
.value = 512
|
||||
},
|
||||
{
|
||||
@@ -1014,7 +1014,7 @@ static const device_config_t et4000_bios_config[] = {
|
||||
},
|
||||
{
|
||||
.name = "bios_ver",
|
||||
.description = "BIOS Version",
|
||||
.description = "BIOS Revision",
|
||||
.type = CONFIG_BIOS,
|
||||
.default_string = "v8_01",
|
||||
.default_int = 0,
|
||||
@@ -1043,11 +1043,11 @@ static const device_config_t et4000_config[] = {
|
||||
.default_int = 1024,
|
||||
.selection = {
|
||||
{
|
||||
.description = "256 KB",
|
||||
.description = "256 kB",
|
||||
.value = 256
|
||||
},
|
||||
{
|
||||
.description = "512 KB",
|
||||
.description = "512 kB",
|
||||
.value = 512
|
||||
},
|
||||
{
|
||||
|
||||
@@ -643,11 +643,11 @@ const device_config_t nga_config[] = {
|
||||
.default_int = 64,
|
||||
.selection = {
|
||||
{
|
||||
.description = "32 KB",
|
||||
.description = "32 kB",
|
||||
.value = 32
|
||||
},
|
||||
{
|
||||
.description = "64 KB",
|
||||
.description = "64 kB",
|
||||
.value = 64
|
||||
},
|
||||
{
|
||||
|
||||
@@ -393,11 +393,11 @@ static const device_config_t rtg3105_config[] = {
|
||||
.default_int = 512,
|
||||
.selection = {
|
||||
{
|
||||
.description = "256 KB",
|
||||
.description = "256 kB",
|
||||
.value = 256
|
||||
},
|
||||
{
|
||||
.description = "512 KB",
|
||||
.description = "512 kB",
|
||||
.value = 512
|
||||
},
|
||||
{
|
||||
@@ -420,11 +420,11 @@ static const device_config_t rtg3106_config[] = {
|
||||
.default_int = 1024,
|
||||
.selection = {
|
||||
{
|
||||
.description = "256 KB",
|
||||
.description = "256 kB",
|
||||
.value = 256
|
||||
},
|
||||
{
|
||||
.description = "512 KB",
|
||||
.description = "512 kB",
|
||||
.value = 512
|
||||
},
|
||||
{
|
||||
|
||||
@@ -10489,7 +10489,7 @@ static const device_config_t s3_orchid_86c911_config[] = {
|
||||
.type = CONFIG_SELECTION,
|
||||
.default_int = 1,
|
||||
.selection = {
|
||||
{ .description = "512 KB",
|
||||
{ .description = "512 kB",
|
||||
.value = 0 },
|
||||
{ .description = "1 MB",
|
||||
.value = 1 },
|
||||
@@ -10519,7 +10519,7 @@ static const device_config_t s3_phoenix_trio32_config[] = {
|
||||
.type = CONFIG_SELECTION,
|
||||
.default_int = 2,
|
||||
.selection = {
|
||||
{ .description = "512 KB",
|
||||
{ .description = "512 kB",
|
||||
.value = 0 },
|
||||
{ .description = "1 MB",
|
||||
.value = 1 },
|
||||
|
||||
@@ -58,7 +58,6 @@ uint8_t svga_rotate[8][256];
|
||||
/*Primary SVGA device. As multiple video cards are not yet supported this is the
|
||||
only SVGA device.*/
|
||||
static svga_t *svga_pri;
|
||||
int vga_on;
|
||||
|
||||
#ifdef ENABLE_SVGA_LOG
|
||||
int svga_do_log = ENABLE_SVGA_LOG;
|
||||
@@ -87,10 +86,24 @@ svga_get_pri(void)
|
||||
void
|
||||
svga_set_override(svga_t *svga, int val)
|
||||
{
|
||||
ibm8514_t *dev = (ibm8514_t *) svga->dev8514;
|
||||
|
||||
if (svga->override && !val)
|
||||
svga->fullchange = svga->monitor->mon_changeframecount;
|
||||
svga->override = val;
|
||||
|
||||
svga_log("Override=%x.\n", val);
|
||||
if (ibm8514_active && (svga->dev8514 != NULL)) {
|
||||
if (dev->on) {
|
||||
if (svga->override)
|
||||
timer_set_callback(&svga->timer, svga_poll);
|
||||
else
|
||||
timer_set_callback(&svga->timer, ibm8514_poll);
|
||||
} else
|
||||
timer_set_callback(&svga->timer, svga_poll);
|
||||
} else
|
||||
timer_set_callback(&svga->timer, svga_poll);
|
||||
|
||||
#ifdef OVERRIDE_OVERSCAN
|
||||
if (!val) {
|
||||
/* Override turned off, restore overscan X and Y per the CRTC. */
|
||||
@@ -119,11 +132,10 @@ svga_out(uint16_t addr, uint8_t val, void *priv)
|
||||
uint8_t index;
|
||||
uint8_t pal4to16[16] = { 0, 7, 0x38, 0x3f, 0, 3, 4, 0x3f, 0, 2, 4, 0x3e, 0, 3, 5, 0x3f };
|
||||
|
||||
if (!dev && (addr >= 0x2ea) && (addr <= 0x2ed))
|
||||
return;
|
||||
|
||||
if (addr >= 0x3c6 && addr <= 0x3c9)
|
||||
svga_log("VGA OUT addr=%03x, val=%02x.\n", addr, val);
|
||||
if ((addr >= 0x2ea) && (addr <= 0x2ed)) {
|
||||
if (!dev)
|
||||
return;
|
||||
}
|
||||
|
||||
switch (addr) {
|
||||
case 0x2ea:
|
||||
@@ -172,6 +184,7 @@ svga_out(uint16_t addr, uint8_t val, void *priv)
|
||||
if ((val & 0x20) != svga->attr_palette_enable) {
|
||||
svga->fullchange = 3;
|
||||
svga->attr_palette_enable = val & 0x20;
|
||||
svga_log("Write Port %03x palette enable=%02x.\n", addr, svga->attr_palette_enable);
|
||||
svga_recalctimings(svga);
|
||||
}
|
||||
} else {
|
||||
@@ -196,12 +209,16 @@ svga_out(uint16_t addr, uint8_t val, void *priv)
|
||||
/* Recalculate timings on change of attribute register 0x11
|
||||
(overscan border color) too. */
|
||||
if (svga->attraddr == 0x10) {
|
||||
if (o != val)
|
||||
if (o != val) {
|
||||
svga_log("ATTR10.\n");
|
||||
svga_recalctimings(svga);
|
||||
}
|
||||
} else if (svga->attraddr == 0x11) {
|
||||
svga->overscan_color = svga->pallook[svga->attrregs[0x11]];
|
||||
if (o != val)
|
||||
if (o != val) {
|
||||
svga_log("ATTR11.\n");
|
||||
svga_recalctimings(svga);
|
||||
}
|
||||
} else if (svga->attraddr == 0x12) {
|
||||
if ((val & 0xf) != svga->plane_mask)
|
||||
svga->fullchange = svga->monitor->mon_changeframecount;
|
||||
@@ -224,8 +241,7 @@ svga_out(uint16_t addr, uint8_t val, void *priv)
|
||||
if (ibm8514_active && dev)
|
||||
dev->on = (val & 0x01) ? 0 : 1;
|
||||
|
||||
svga_log("3C3: VGA ON = %d.\n", val & 0x01);
|
||||
vga_on = val & 0x01;
|
||||
svga_log("Write Port 3C3.\n");
|
||||
svga_recalctimings(svga);
|
||||
break;
|
||||
case 0x3c4:
|
||||
@@ -236,13 +252,16 @@ svga_out(uint16_t addr, uint8_t val, void *priv)
|
||||
return;
|
||||
o = svga->seqregs[svga->seqaddr & 0xf];
|
||||
svga->seqregs[svga->seqaddr & 0xf] = val;
|
||||
if (o != val && (svga->seqaddr & 0xf) == 1)
|
||||
if (o != val && (svga->seqaddr & 0xf) == 1) {
|
||||
svga_log("SEQADDR1 write1.\n");
|
||||
svga_recalctimings(svga);
|
||||
}
|
||||
switch (svga->seqaddr & 0xf) {
|
||||
case 1:
|
||||
if (svga->scrblank && !(val & 0x20))
|
||||
svga->fullchange = 3;
|
||||
svga->scrblank = (svga->scrblank & ~0x20) | (val & 0x20);
|
||||
svga_log("SEQADDR1 write2.\n");
|
||||
svga_recalctimings(svga);
|
||||
break;
|
||||
case 2:
|
||||
@@ -273,7 +292,7 @@ svga_out(uint16_t addr, uint8_t val, void *priv)
|
||||
case 0x3c8:
|
||||
svga->dac_pos = 0;
|
||||
svga->dac_status = addr & 0x03;
|
||||
svga->dac_addr = (val + (addr & 0x01)) & 255;
|
||||
svga->dac_addr = (val + (addr & 0x01)) & 0xff;
|
||||
break;
|
||||
case 0x3c9:
|
||||
if (svga->adv_flags & FLAG_RAMDAC_SHIFT)
|
||||
@@ -289,7 +308,7 @@ svga_out(uint16_t addr, uint8_t val, void *priv)
|
||||
svga->dac_pos++;
|
||||
break;
|
||||
case 2:
|
||||
index = svga->dac_addr & 255;
|
||||
index = svga->dac_addr & 0xff;
|
||||
svga->dac_b = val;
|
||||
svga->vgapal[index].r = svga->dac_r;
|
||||
svga->vgapal[index].g = svga->dac_g;
|
||||
@@ -299,7 +318,7 @@ svga_out(uint16_t addr, uint8_t val, void *priv)
|
||||
else
|
||||
svga->pallook[index] = makecol32(video_6to8[svga->vgapal[index].r & 0x3f], video_6to8[svga->vgapal[index].g & 0x3f], video_6to8[svga->vgapal[index].b & 0x3f]);
|
||||
svga->dac_pos = 0;
|
||||
svga->dac_addr = (svga->dac_addr + 1) & 255;
|
||||
svga->dac_addr = (svga->dac_addr + 1) & 0xff;
|
||||
break;
|
||||
|
||||
default:
|
||||
@@ -357,8 +376,10 @@ svga_out(uint16_t addr, uint8_t val, void *priv)
|
||||
}
|
||||
svga->gdcreg[svga->gdcaddr & 15] = val;
|
||||
svga->fast = (svga->gdcreg[8] == 0xff && !(svga->gdcreg[3] & 0x18) && !svga->gdcreg[1]) && ((svga->chain4 && (svga->packed_chain4 || svga->force_old_addr)) || svga->fb_only);
|
||||
if (((svga->gdcaddr & 15) == 5 && (val ^ o) & 0x70) || ((svga->gdcaddr & 15) == 6 && (val ^ o) & 1))
|
||||
if (((svga->gdcaddr & 15) == 5 && (val ^ o) & 0x70) || ((svga->gdcaddr & 15) == 6 && (val ^ o) & 1)) {
|
||||
svga_log("GDCADDR%02x recalc.\n", svga->gdcaddr & 0x0f);
|
||||
svga_recalctimings(svga);
|
||||
}
|
||||
break;
|
||||
case 0x3da:
|
||||
svga->fcr = val;
|
||||
@@ -374,11 +395,14 @@ svga_in(uint16_t addr, void *priv)
|
||||
{
|
||||
svga_t *svga = (svga_t *) priv;
|
||||
ibm8514_t *dev = (ibm8514_t *) svga->dev8514;
|
||||
xga_t *xga = (xga_t *) svga->xga;
|
||||
uint8_t index;
|
||||
uint8_t ret = 0xff;
|
||||
|
||||
if (!dev && (addr >= 0x2ea) && (addr <= 0x2ed))
|
||||
return ret;
|
||||
if ((addr >= 0x2ea) && (addr <= 0x2ed)) {
|
||||
if (!dev)
|
||||
return ret;
|
||||
}
|
||||
|
||||
switch (addr) {
|
||||
case 0x2ea:
|
||||
@@ -434,7 +458,16 @@ svga_in(uint16_t addr, void *priv)
|
||||
ret = 0x10;
|
||||
break;
|
||||
case 0x3c3:
|
||||
ret = vga_on;
|
||||
ret = 0x01;
|
||||
if (xga_active && xga) {
|
||||
if (xga->on)
|
||||
ret = 0x00;
|
||||
}
|
||||
if (ibm8514_active && dev) {
|
||||
if (dev->on)
|
||||
ret = 0x00;
|
||||
}
|
||||
svga_log("VGA read: (0x%04x) ret=%02x.\n", addr, ret);
|
||||
break;
|
||||
case 0x3c4:
|
||||
ret = svga->seqaddr;
|
||||
@@ -452,7 +485,7 @@ svga_in(uint16_t addr, void *priv)
|
||||
ret = svga->dac_addr;
|
||||
break;
|
||||
case 0x3c9:
|
||||
index = (svga->dac_addr - 1) & 255;
|
||||
index = (svga->dac_addr - 1) & 0xff;
|
||||
switch (svga->dac_pos) {
|
||||
case 0:
|
||||
svga->dac_pos++;
|
||||
@@ -470,7 +503,7 @@ svga_in(uint16_t addr, void *priv)
|
||||
break;
|
||||
case 2:
|
||||
svga->dac_pos = 0;
|
||||
svga->dac_addr = (svga->dac_addr + 1) & 255;
|
||||
svga->dac_addr = (svga->dac_addr + 1) & 0xff;
|
||||
if (svga->ramdac_type == RAMDAC_8BIT)
|
||||
ret = svga->vgapal[index].b;
|
||||
else
|
||||
@@ -532,6 +565,8 @@ svga_in(uint16_t addr, void *priv)
|
||||
|
||||
if ((addr >= 0x3c6) && (addr <= 0x3c9))
|
||||
svga_log("VGA IN addr=%03x, temp=%02x.\n", addr, ret);
|
||||
else if ((addr >= 0x2ea) && (addr <= 0x2ed))
|
||||
svga_log("8514/A IN addr=%03x, temp=%02x.\n", addr, ret);
|
||||
|
||||
return ret;
|
||||
}
|
||||
@@ -1013,6 +1048,7 @@ svga_do_render(svga_t *svga)
|
||||
if (svga->hwcursor_on) {
|
||||
if (!svga->override && svga->hwcursor_draw)
|
||||
svga->hwcursor_draw(svga, (svga->displine + svga->y_add + ((svga->hwcursor_latch.y >= 0) ? 0 : svga->hwcursor_latch.y)) & 2047);
|
||||
|
||||
svga->hwcursor_on--;
|
||||
if (svga->hwcursor_on && svga->interlace)
|
||||
svga->hwcursor_on--;
|
||||
@@ -1084,9 +1120,8 @@ svga_poll(void *priv)
|
||||
video_wait_for_buffer_monitor(svga->monitor_index);
|
||||
}
|
||||
|
||||
if (svga->hwcursor_on || svga->dac_hwcursor_on || svga->overlay_on) {
|
||||
if (svga->hwcursor_on || svga->dac_hwcursor_on || svga->overlay_on)
|
||||
svga->changedvram[svga->ma >> 12] = svga->changedvram[(svga->ma >> 12) + 1] = svga->interlace ? 3 : 2;
|
||||
}
|
||||
|
||||
if (svga->vertical_linedbl) {
|
||||
old_ma = svga->ma;
|
||||
@@ -1172,6 +1207,7 @@ svga_poll(void *priv)
|
||||
svga->ma = svga->maback = (svga->rowoffset << 1) + svga->hblank_sub;
|
||||
else
|
||||
svga->ma = svga->maback = svga->hblank_sub;
|
||||
|
||||
svga->ma = (svga->ma << 2);
|
||||
svga->maback = (svga->maback << 2);
|
||||
|
||||
@@ -1204,6 +1240,7 @@ svga_poll(void *priv)
|
||||
if (svga->changedvram[x])
|
||||
svga->changedvram[x]--;
|
||||
}
|
||||
|
||||
if (svga->fullchange)
|
||||
svga->fullchange--;
|
||||
}
|
||||
@@ -1363,8 +1400,6 @@ svga_init(const device_t *info, svga_t *svga, void *priv, int memsize,
|
||||
svga->translate_address = NULL;
|
||||
svga->ksc5601_english_font_type = 0;
|
||||
|
||||
vga_on = 1;
|
||||
|
||||
if ((info->flags & DEVICE_PCI) || (info->flags & DEVICE_VLB) || (info->flags & DEVICE_MCA)) {
|
||||
mem_mapping_add(&svga->mapping, 0xa0000, 0x20000,
|
||||
svga_read, svga_readw, svga_readl,
|
||||
|
||||
@@ -1418,7 +1418,7 @@ static const device_config_t voodoo_config[] = {
|
||||
#ifndef NO_CODEGEN
|
||||
{
|
||||
.name = "recompiler",
|
||||
.description = "Recompiler",
|
||||
.description = "Dynamic Recompiler",
|
||||
.type = CONFIG_BINARY,
|
||||
.default_int = 1
|
||||
},
|
||||
|
||||
@@ -3220,7 +3220,7 @@ static const device_config_t banshee_sgram_config[] = {
|
||||
#ifndef NO_CODEGEN
|
||||
{
|
||||
.name = "recompiler",
|
||||
.description = "Recompiler",
|
||||
.description = "Dynamic Recompiler",
|
||||
.type = CONFIG_BINARY,
|
||||
.default_int = 1
|
||||
},
|
||||
@@ -3275,7 +3275,7 @@ static const device_config_t banshee_sgram_16mbonly_config[] = {
|
||||
#ifndef NO_CODEGEN
|
||||
{
|
||||
.name = "recompiler",
|
||||
.description = "Recompiler",
|
||||
.description = "Dynamic Recompiler",
|
||||
.type = CONFIG_BINARY,
|
||||
.default_int = 1
|
||||
},
|
||||
@@ -3330,7 +3330,7 @@ static const device_config_t banshee_sdram_config[] = {
|
||||
#ifndef NO_CODEGEN
|
||||
{
|
||||
.name = "recompiler",
|
||||
.description = "Recompiler",
|
||||
.description = "Dynamic Recompiler",
|
||||
.type = CONFIG_BINARY,
|
||||
.default_int = 1
|
||||
},
|
||||
|
||||
@@ -442,7 +442,6 @@ xga_ext_out_reg(xga_t *xga, svga_t *svga, uint8_t idx, uint8_t val)
|
||||
xga_log("Reg51 write = %02x.\n", val);
|
||||
xga->disp_cntl_2 = val;
|
||||
xga->on = ((val & 7) >= 2);
|
||||
vga_on = !xga->on;
|
||||
svga_recalctimings(svga);
|
||||
break;
|
||||
|
||||
@@ -2661,22 +2660,18 @@ xga_write_test(uint32_t addr, uint8_t val, void *priv)
|
||||
xga->a5_test = 2;
|
||||
|
||||
xga->on = 0;
|
||||
vga_on = 1;
|
||||
xga_log("XGA test1 addr=%05x, test=%02x.\n", addr, xga->a5_test);
|
||||
} else if (val == 0x5a) {
|
||||
xga->test = val;
|
||||
xga->on = 0;
|
||||
vga_on = 1;
|
||||
xga_log("XGA test2 addr = %05x.\n", addr);
|
||||
} else if ((addr == 0xa0000) || (addr == 0xa0010)) {
|
||||
addr += xga->write_bank;
|
||||
xga->vram[addr & xga->vram_mask] = val;
|
||||
xga_log("XGA Linear endian reverse write, val = %02x, addr = %05x, banked mask = %04x, a5test=%d.\n", val, addr, svga->banked_mask, xga->a5_test);
|
||||
}
|
||||
} else if (xga->aperture_cntl) {
|
||||
} else if (xga->aperture_cntl)
|
||||
xga->on = 0;
|
||||
vga_on = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2763,7 +2758,6 @@ xga_read_test(uint32_t addr, void *priv)
|
||||
if (addr == 0xa0001) {
|
||||
ret = xga->test;
|
||||
xga->on = 1;
|
||||
vga_on = 0;
|
||||
} else if ((addr == 0xa0000) && (xga->a5_test == 1)) { /*This is required by XGAKIT to pass the memory test*/
|
||||
xga_log("A5 test bank = %x.\n", addr);
|
||||
addr += xga->read_bank;
|
||||
@@ -2771,14 +2765,12 @@ xga_read_test(uint32_t addr, void *priv)
|
||||
} else {
|
||||
ret = xga->test;
|
||||
xga->on = 1;
|
||||
vga_on = 0;
|
||||
}
|
||||
xga_log("A5 read: XGA ON = %d, addr = %05x, ret = %02x, test1 = %x.\n", xga->on, addr, ret, xga->a5_test);
|
||||
return ret;
|
||||
} else if (xga->test == 0x5a) {
|
||||
ret = xga->test;
|
||||
xga->on = 1;
|
||||
vga_on = 0;
|
||||
xga_log("5A read: XGA ON = %d.\n", xga->on);
|
||||
return ret;
|
||||
} else if ((addr == 0xa0000) || (addr == 0xa0010)) {
|
||||
@@ -2787,7 +2779,6 @@ xga_read_test(uint32_t addr, void *priv)
|
||||
}
|
||||
} else if (xga->aperture_cntl) {
|
||||
xga->on = 0;
|
||||
vga_on = 1;
|
||||
}
|
||||
}
|
||||
return ret;
|
||||
@@ -3041,7 +3032,6 @@ xga_poll(void *priv)
|
||||
if (xga->hwcursor_on)
|
||||
xga->changedvram[xga->ma >> 12] = xga->changedvram[(xga->ma >> 12) + 1] = xga->interlace ? 3 : 2;
|
||||
|
||||
xga_log("DISPCNTL = %d, vga = %d.\n", xga->disp_cntl_2 & 7, vga_on);
|
||||
switch (xga->disp_cntl_2 & 7) {
|
||||
case 2:
|
||||
xga_render_4bpp(svga);
|
||||
@@ -3202,7 +3192,6 @@ xga_mca_write(int port, uint8_t val, void *priv)
|
||||
io_removehandler(0x2100 + (xga->instance << 4), 0x0010, xga_ext_inb, NULL, NULL, xga_ext_outb, NULL, NULL, svga);
|
||||
mem_mapping_disable(&xga->memio_mapping);
|
||||
xga->on = 0;
|
||||
vga_on = 1;
|
||||
xga->a5_test = 0;
|
||||
|
||||
/* Save the MCA register value. */
|
||||
@@ -3260,7 +3249,6 @@ xga_reset(void *priv)
|
||||
mem_mapping_disable(&xga->memio_mapping);
|
||||
|
||||
xga->on = 0;
|
||||
vga_on = 1;
|
||||
xga->a5_test = 0;
|
||||
mem_mapping_set_handler(&svga->mapping, svga_read, svga_readw, svga_readl, svga_write, svga_writew, svga_writel);
|
||||
}
|
||||
@@ -3661,7 +3649,7 @@ static const device_config_t xga_isa_configuration[] = {
|
||||
},
|
||||
{
|
||||
.name = "ext_mem_addr",
|
||||
.description = "MMIO address",
|
||||
.description = "MMIO Address",
|
||||
.type = CONFIG_HEX16,
|
||||
.default_string = "",
|
||||
.default_int = 0x00f0,
|
||||
@@ -3685,7 +3673,7 @@ static const device_config_t xga_isa_configuration[] = {
|
||||
},
|
||||
{
|
||||
.name = "dma",
|
||||
.description = "DMA channel",
|
||||
.description = "DMA",
|
||||
.type = CONFIG_SELECTION,
|
||||
.default_string = "",
|
||||
.default_int = 7,
|
||||
@@ -3726,7 +3714,7 @@ static const device_config_t xga_inmos_isa_configuration[] = {
|
||||
},
|
||||
{
|
||||
.name = "dma",
|
||||
.description = "DMA channel",
|
||||
.description = "DMA",
|
||||
.type = CONFIG_SELECTION,
|
||||
.default_string = "",
|
||||
.default_int = 7,
|
||||
|
||||
@@ -125,7 +125,6 @@ vnc_clientgone(UNUSED(rfbClientPtr cl))
|
||||
#if 0
|
||||
plat_mouse_capture(0);
|
||||
#endif
|
||||
mouse_set_poll_ex(NULL);
|
||||
|
||||
plat_pause(1);
|
||||
}
|
||||
@@ -152,7 +151,6 @@ vnc_newclient(rfbClientPtr cl)
|
||||
#if 0
|
||||
plat_mouse_capture(1);
|
||||
#endif
|
||||
mouse_set_poll_ex(vnc_mouse_poll);
|
||||
|
||||
plat_pause(0);
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "86box",
|
||||
"version-string": "4.2.2",
|
||||
"version-string": "4.3",
|
||||
"homepage": "https://86box.net/",
|
||||
"documentation": "https://86box.readthedocs.io/",
|
||||
"license": "GPL-2.0-or-later",
|
||||
|
||||
Reference in New Issue
Block a user