PCem

changeset 147:a221bebd5ff3

Fixed IDE transfers of 256 sectors, Windows 2000 now works.
author TomW
date Wed Aug 20 19:37:23 2014 +0100
parents 21f926f1fabf
children d08a822e6603
files src/ide.c
diffstat 1 files changed, 5 insertions(+), 5 deletions(-) [+]
line diff
     1.1 --- a/src/ide.c	Mon Aug 18 20:28:31 2014 +0100
     1.2 +++ b/src/ide.c	Wed Aug 20 19:37:23 2014 +0100
     1.3 @@ -1059,7 +1059,7 @@
     1.4                          ide->packetstatus=0;
     1.5                          if (ide->command == WIN_READ || ide->command == WIN_READ_NORETRY || ide->command == WIN_READ_MULTIPLE)
     1.6                          {
     1.7 -                                ide->secount--;
     1.8 +                                ide->secount = (ide->secount - 1) & 0xff;
     1.9                                  if (ide->secount)
    1.10                                  {
    1.11                                          ide_next_sector(ide);
    1.12 @@ -1187,7 +1187,7 @@
    1.13                                  /*DMA successful*/
    1.14                                  ide->atastat = DRQ_STAT | READY_STAT | DSC_STAT;
    1.15  
    1.16 -                                ide->secount--;
    1.17 +                                ide->secount = (ide->secount - 1) & 0xff;
    1.18                                  if (ide->secount)
    1.19                                  {
    1.20                                          ide_next_sector(ide);
    1.21 @@ -1239,7 +1239,7 @@
    1.22                  fseeko64(ide->hdfile, addr, SEEK_SET);
    1.23                  fwrite(ide->buffer, 512, 1, ide->hdfile);
    1.24                  ide_irq_raise(ide);
    1.25 -                ide->secount--;
    1.26 +                ide->secount = (ide->secount - 1) & 0xff;
    1.27                  if (ide->secount)
    1.28                  {
    1.29                          ide->atastat = DRQ_STAT | READY_STAT | DSC_STAT;
    1.30 @@ -1271,7 +1271,7 @@
    1.31                                  
    1.32                                  ide->atastat = DRQ_STAT | READY_STAT | DSC_STAT;
    1.33  
    1.34 -                                ide->secount--;
    1.35 +                                ide->secount = (ide->secount - 1) & 0xff;
    1.36                                  if (ide->secount)
    1.37                                  {
    1.38                                          ide_next_sector(ide);
    1.39 @@ -1304,7 +1304,7 @@
    1.40                          ide->blockcount = 0;
    1.41                          ide_irq_raise(ide);
    1.42                  }
    1.43 -                ide->secount--;
    1.44 +                ide->secount = (ide->secount - 1) & 0xff;
    1.45                  if (ide->secount)
    1.46                  {
    1.47                          ide->atastat = DRQ_STAT | READY_STAT | DSC_STAT;