# HG changeset patch # User TomW # Date 1408559843 -3600 # Node ID a221bebd5ff315774c950395fc6b89520c859625 # Parent 21f926f1fabf8e475eb865e273d87a0c1a765e41 Fixed IDE transfers of 256 sectors, Windows 2000 now works. diff -r 21f926f1fabf -r a221bebd5ff3 src/ide.c --- a/src/ide.c Mon Aug 18 20:28:31 2014 +0100 +++ b/src/ide.c Wed Aug 20 19:37:23 2014 +0100 @@ -1059,7 +1059,7 @@ ide->packetstatus=0; if (ide->command == WIN_READ || ide->command == WIN_READ_NORETRY || ide->command == WIN_READ_MULTIPLE) { - ide->secount--; + ide->secount = (ide->secount - 1) & 0xff; if (ide->secount) { ide_next_sector(ide); @@ -1187,7 +1187,7 @@ /*DMA successful*/ ide->atastat = DRQ_STAT | READY_STAT | DSC_STAT; - ide->secount--; + ide->secount = (ide->secount - 1) & 0xff; if (ide->secount) { ide_next_sector(ide); @@ -1239,7 +1239,7 @@ fseeko64(ide->hdfile, addr, SEEK_SET); fwrite(ide->buffer, 512, 1, ide->hdfile); ide_irq_raise(ide); - ide->secount--; + ide->secount = (ide->secount - 1) & 0xff; if (ide->secount) { ide->atastat = DRQ_STAT | READY_STAT | DSC_STAT; @@ -1271,7 +1271,7 @@ ide->atastat = DRQ_STAT | READY_STAT | DSC_STAT; - ide->secount--; + ide->secount = (ide->secount - 1) & 0xff; if (ide->secount) { ide_next_sector(ide); @@ -1304,7 +1304,7 @@ ide->blockcount = 0; ide_irq_raise(ide); } - ide->secount--; + ide->secount = (ide->secount - 1) & 0xff; if (ide->secount) { ide->atastat = DRQ_STAT | READY_STAT | DSC_STAT;