Reworked serial and LPT set up - they can now bet set to any I/O base address (though that capability is not used by anything yet);

The CD-ROM IOCTL direct pass through code now does sanity check on the requested data size before passing the command - fixes crashes with some DMA-only host DVD drives;
The network poller is now in its own thread;
The hack is back in the emulation of the National Semiconductors PC87306 Super I/O Chip - it's the only way right now to have serial working on that board;
Fixed a part of the code that was still using NukedOPL even when OPL 3 was set to DOSBox OPL;
Applied all mainline PCem commits.
This commit is contained in:
OBattler
2017-02-07 02:19:48 +01:00
parent 22c3a74e3b
commit c8c49ac216
14 changed files with 1990 additions and 1883 deletions

View File

@@ -84,18 +84,18 @@ void opl_timer_over(int nr, int timer)
void opl_write(int nr, uint16_t addr, uint8_t val)
{
if (!(addr & 1))
{
if (!opl[nr].is_opl3)
opl[nr].addr = (int)opl[nr].chip.WriteAddr(addr, val) & 0xff;
else
opl[nr].addr = (int)OPL3_WriteAddr(&opl[nr].opl3chip, addr, val) & 0x1ff;
}
{
if (!opl[nr].is_opl3 || !opl3_type)
opl[nr].addr = (int)opl[nr].chip.WriteAddr(addr, val) & 0xff;
else
opl[nr].addr = (int)OPL3_WriteAddr(&opl[nr].opl3chip, addr, val) & 0x1ff;
}
else
{
if (!opl[nr].is_opl3)
opl[nr].chip.WriteReg(opl[nr].addr, val);
else
OPL3_WriteReg(&opl[nr].opl3chip, opl[nr].addr, val);
if (!opl[nr].is_opl3 || !opl3_type)
opl[nr].chip.WriteReg(opl[nr].addr, val);
else
OPL3_WriteReg(&opl[nr].opl3chip, opl[nr].addr, val);
switch (opl[nr].addr)
{