PIIX zero length transfer represents 64 kbytes. Fixes CD-ROM on BeOS.

This commit is contained in:
SarahW 2018-04-08 07:56:48 +01:00
commit 82ad526745

View file

@ -154,6 +154,8 @@ static void piix_bus_master_next_addr(int channel)
{
piix_busmaster[channel].addr = (*(uint32_t *)(&ram[piix_busmaster[channel].ptr_cur])) & ~1;
piix_busmaster[channel].count = (*(uint32_t *)(&ram[piix_busmaster[channel].ptr_cur + 4])) & 0xfffe;
if (!piix_busmaster[channel].count)
piix_busmaster[channel].count = 0x10000;
piix_busmaster[channel].eot = (*(uint32_t *)(&ram[piix_busmaster[channel].ptr_cur + 4])) >> 31;
piix_busmaster[channel].ptr_cur += 8;
// pclog("New DMA settings on channel %i - Addr %08X Count %04X EOT %i\n", channel, piix_busmaster[channel].addr, piix_busmaster[channel].count, piix_busmaster[channel].eot);