Previous 199869 Revisions Next

r19287 Monday 3rd December, 2012 at 21:22:13 UTC by Carl
upd765.c: Revert sector increment behavior and don't change chs address on error (nw)
[src/emu/machine]upd765.c

trunk/src/emu/machine/upd765.c
r19286r19287
14911491            break;
14921492         }
14931493         bool done = tc_done;
1494         command[4]++;
1495         if(command[4] > command[6]) {
1496            command[4] = 1;
1497            command[3] = command[3] ^ 1;
1494         if(command[4] == command[6]) {
14981495            if(command[0] & 0x80) {
1496               command[3] = command[3] ^ 1;
1497               command[4] = 1;
14991498               if(fi.dev)
15001499                  fi.dev->ss_w(command[3] & 1);
1501               if(!command[3]) {
1502                  done = true;
1500            }
1501            if(!(command[0] & 0x80) || !(command[3] & 1)) {
1502               if(!tc_done) {
1503                  fi.st0 |= ST0_FAIL;
1504                  st1 |= ST1_EN;
1505               } else {
15031506                  command[2]++;
1507                  command[4] = 1;
15041508               }
1505            } else {
15061509               done = true;
1507               if(!command[3])
1508                  command[2]++;
15091510            }
1510            if(!tc_done && done) {
1511               fi.st0 |= ST0_FAIL;
1512               st1 |= ST1_EN;
1513            }
1514         }
1511         } else
1512            command[4]++;
15151513         if(!done) {
15161514            fi.sub_state = SEEK_DONE;
15171515            break;
r19286r19287
16071605
16081606      case SECTOR_WRITTEN: {
16091607         bool done = tc_done;
1610         command[4]++;
1611         if(command[4] > command[6]) {
1612            command[4] = 1;
1613            command[3] = command[3] ^ 1;
1608         if(command[4] == command[6]) {
16141609            if(command[0] & 0x80) {
1610               command[3] = command[3] ^ 1;
1611               command[4] = 1;
16151612               if(fi.dev)
16161613                  fi.dev->ss_w(command[3] & 1);
1617               if(!command[3]) {
1618                  done = true;
1614            }
1615            if(!(command[0] & 0x80) || !(command[3] & 1)) {
1616               if(!tc_done) {
1617                  fi.st0 |= ST0_FAIL;
1618                  st1 |= ST1_EN;
1619               } else {
16191620                  command[2]++;
1621                  command[4] = 1;
16201622               }
1621            } else {
16221623               done = true;
1623               if(!command[3])
1624                  command[2]++;
16251624            }
1626            if(!tc_done && done) {
1627               fi.st0 |= ST0_FAIL;
1628               st1 |= ST1_EN;
1629            }
1630         }
1625         } else
1626            command[4]++;
16311627         if(!done) {
16321628            fi.sub_state = HEAD_LOAD_DONE;
16331629            break;

Previous 199869 Revisions Next


© 1997-2024 The MAME Team