More 808x fixed - fixed (kind of) the 8086 lock ups and the DRAM refresh wait states, also further fixed (and cleaned up) prefetch queue operation, applied a few warning fixes, and fixed the behavior of PUSH SP - anything that uses it to tell 808x apart from 286 is now fixed;

Re-added the higher-clocked 8088's;
Fixed PIT timings for 808x CPU's that don't run off an 14.3 MHz crystal;
Fixed CGA cursor half blink rate setting - fixes insane cursor blinking speed in several cases;
DMA now issues DMA refresh DRAM states on every channel;
Gave the 1982 years to the previously emulated PC and XT's names, and added the 1981 IBM PC and 1986 IBM XT;
Redid the PPI DIP switch redout for the PC/XT keyboard controller;
Fixed a segmentation fault in hdc_ide.c that tended to occur on hard reset after switching machines;
Implemented the port 3B8 color disable on the Hercules, Hercules Plus, and Hercules InColor cards;
Fixed the joystick configuration dialog strings;
Fixed a problem that would have prevented win_sdl.c from compiling with logging enabled.
This commit is contained in:
OBattler
2019-02-11 01:33:15 +01:00
parent a4c11f9536
commit c1f18d9abc
21 changed files with 611 additions and 359 deletions

View File

@@ -513,10 +513,7 @@ pc_full_speed(void)
if (! atfullspeed) {
pc_log("Set fullspeed - %i %i %i\n", is386, AT, cpuspeed2);
if (machines[machine].cpu[cpu_manufacturer].cpus[cpu_effective].cpu_type >= CPU_286)
setpitclock(machines[machine].cpu[cpu_manufacturer].cpus[cpu_effective].rspeed);
else
setpitclock(14318184.0);
setpitclock(machines[machine].cpu[cpu_manufacturer].cpus[cpu_effective].rspeed);
}
atfullspeed = 1;
@@ -527,54 +524,12 @@ pc_full_speed(void)
void
pc_speed_changed(void)
{
if (machines[machine].cpu[cpu_manufacturer].cpus[cpu_effective].cpu_type >= CPU_286)
setpitclock(machines[machine].cpu[cpu_manufacturer].cpus[cpu_effective].rspeed);
else
setpitclock(14318184.0);
setpitclock(machines[machine].cpu[cpu_manufacturer].cpus[cpu_effective].rspeed);
nvr_period_recalc();
}
#if 0
/* Re-load system configuration and restart. */
/* FIXME: this has to be reviewed! */
void
pc_reload(wchar_t *fn)
{
int i;
config_write(cfg_path);
for (i=0; i<FDD_NUM; i++)
fdd_close(i);
cdrom_close();
pc_reset_hard_close();
// FIXME: set up new config file path 'fn'... --FvK
config_load();
cdrom_hard_reset();
zip_hard_reset();
scsi_disk_hard_reset();
fdd_load(0, floppyfns[0]);
fdd_load(1, floppyfns[1]);
fdd_load(2, floppyfns[2]);
fdd_load(3, floppyfns[3]);
network_init();
pc_reset_hard_init();
}
#endif
/* Initialize modules, ran once, after pc_init. */
int
pc_init_modules(void)
@@ -795,7 +750,6 @@ pc_reset_hard_init(void)
/* Reset the Hard Disk Controller module. */
hdc_reset();
/* Reset and reconfigure the SCSI layer. */
scsi_card_init();
@@ -832,10 +786,7 @@ pc_reset_hard_init(void)
pc_full_speed();
if (machines[machine].cpu[cpu_manufacturer].cpus[cpu_effective].cpu_type >= CPU_286)
setpitclock(machines[machine].cpu[cpu_manufacturer].cpus[cpu_effective].rspeed);
else
setpitclock(14318184.0);
setpitclock(machines[machine].cpu[cpu_manufacturer].cpus[cpu_effective].rspeed);
}