trunk/src/emu/machine/upd765.c
| r19286 | r19287 | |
| 1491 | 1491 | break; |
| 1492 | 1492 | } |
| 1493 | 1493 | 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]) { |
| 1498 | 1495 | if(command[0] & 0x80) { |
| 1496 | command[3] = command[3] ^ 1; |
| 1497 | command[4] = 1; |
| 1499 | 1498 | if(fi.dev) |
| 1500 | 1499 | 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 { |
| 1503 | 1506 | command[2]++; |
| 1507 | command[4] = 1; |
| 1504 | 1508 | } |
| 1505 | | } else { |
| 1506 | 1509 | done = true; |
| 1507 | | if(!command[3]) |
| 1508 | | command[2]++; |
| 1509 | 1510 | } |
| 1510 | | if(!tc_done && done) { |
| 1511 | | fi.st0 |= ST0_FAIL; |
| 1512 | | st1 |= ST1_EN; |
| 1513 | | } |
| 1514 | | } |
| 1511 | } else |
| 1512 | command[4]++; |
| 1515 | 1513 | if(!done) { |
| 1516 | 1514 | fi.sub_state = SEEK_DONE; |
| 1517 | 1515 | break; |
| r19286 | r19287 | |
| 1607 | 1605 | |
| 1608 | 1606 | case SECTOR_WRITTEN: { |
| 1609 | 1607 | 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]) { |
| 1614 | 1609 | if(command[0] & 0x80) { |
| 1610 | command[3] = command[3] ^ 1; |
| 1611 | command[4] = 1; |
| 1615 | 1612 | if(fi.dev) |
| 1616 | 1613 | 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 { |
| 1619 | 1620 | command[2]++; |
| 1621 | command[4] = 1; |
| 1620 | 1622 | } |
| 1621 | | } else { |
| 1622 | 1623 | done = true; |
| 1623 | | if(!command[3]) |
| 1624 | | command[2]++; |
| 1625 | 1624 | } |
| 1626 | | if(!tc_done && done) { |
| 1627 | | fi.st0 |= ST0_FAIL; |
| 1628 | | st1 |= ST1_EN; |
| 1629 | | } |
| 1630 | | } |
| 1625 | } else |
| 1626 | command[4]++; |
| 1631 | 1627 | if(!done) { |
| 1632 | 1628 | fi.sub_state = HEAD_LOAD_DONE; |
| 1633 | 1629 | break; |