Fixed IDE transfers of 256 sectors, Windows 2000 now works.

This commit is contained in:
TomW 2014-08-20 19:37:23 +01:00
commit 6fb56149f9

View file

@ -1059,7 +1059,7 @@ uint16_t readidew(int ide_board)
ide->packetstatus=0; ide->packetstatus=0;
if (ide->command == WIN_READ || ide->command == WIN_READ_NORETRY || ide->command == WIN_READ_MULTIPLE) 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) if (ide->secount)
{ {
ide_next_sector(ide); ide_next_sector(ide);
@ -1187,7 +1187,7 @@ void callbackide(int ide_board)
/*DMA successful*/ /*DMA successful*/
ide->atastat = DRQ_STAT | READY_STAT | DSC_STAT; ide->atastat = DRQ_STAT | READY_STAT | DSC_STAT;
ide->secount--; ide->secount = (ide->secount - 1) & 0xff;
if (ide->secount) if (ide->secount)
{ {
ide_next_sector(ide); ide_next_sector(ide);
@ -1239,7 +1239,7 @@ void callbackide(int ide_board)
fseeko64(ide->hdfile, addr, SEEK_SET); fseeko64(ide->hdfile, addr, SEEK_SET);
fwrite(ide->buffer, 512, 1, ide->hdfile); fwrite(ide->buffer, 512, 1, ide->hdfile);
ide_irq_raise(ide); ide_irq_raise(ide);
ide->secount--; ide->secount = (ide->secount - 1) & 0xff;
if (ide->secount) if (ide->secount)
{ {
ide->atastat = DRQ_STAT | READY_STAT | DSC_STAT; ide->atastat = DRQ_STAT | READY_STAT | DSC_STAT;
@ -1271,7 +1271,7 @@ void callbackide(int ide_board)
ide->atastat = DRQ_STAT | READY_STAT | DSC_STAT; ide->atastat = DRQ_STAT | READY_STAT | DSC_STAT;
ide->secount--; ide->secount = (ide->secount - 1) & 0xff;
if (ide->secount) if (ide->secount)
{ {
ide_next_sector(ide); ide_next_sector(ide);
@ -1304,7 +1304,7 @@ void callbackide(int ide_board)
ide->blockcount = 0; ide->blockcount = 0;
ide_irq_raise(ide); ide_irq_raise(ide);
} }
ide->secount--; ide->secount = (ide->secount - 1) & 0xff;
if (ide->secount) if (ide->secount)
{ {
ide->atastat = DRQ_STAT | READY_STAT | DSC_STAT; ide->atastat = DRQ_STAT | READY_STAT | DSC_STAT;