|
@@ -670,9 +670,12 @@ inline byte readHandshake(void)
|
|
|
|
|
|
SCSI_OUT(vREQ,active);
|
|
|
while( ! SCSI_IN(vACK));
|
|
|
+ NOP(10);
|
|
|
+
|
|
|
byte r = readIO();
|
|
|
SCSI_OUT(vREQ,inactive)
|
|
|
while( SCSI_IN(vACK));
|
|
|
+ NOP(10);
|
|
|
return r;
|
|
|
}
|
|
|
|
|
@@ -751,6 +754,7 @@ void writeDataLoop(uint32_t blocksize, const byte* srcptr) {
|
|
|
FETCH_BSRR_DB();
|
|
|
WAIT_ACK_ACTIVE();
|
|
|
REQ_OFF_DB_SET(bsrr_val);
|
|
|
+ NOP(10);
|
|
|
}while(srcptr < endptr);
|
|
|
WAIT_ACK_INACTIVE();
|
|
|
// Finish the last bus cycle, byte is already on DB.
|
|
@@ -784,7 +788,6 @@ void writeDataPhase(int len, const byte* p)
|
|
|
void writeDataPhaseSD(SCSI_DEVICE *dev, uint32_t adds, uint32_t len)
|
|
|
{
|
|
|
LOG (" DI(SD) ");
|
|
|
-
|
|
|
SCSI_PHASE_CHANGE(SCSI_PHASE_DATAIN);
|
|
|
//Bus settle delay 400ns, file.seek() measured at over 1000ns.
|
|
|
uint64_t pos = (uint64_t)adds * dev->m_rawblocksize;
|
|
@@ -829,20 +832,9 @@ void readDataLoop(uint32_t blockSize, byte* dstptr)
|
|
|
// Start of the do/while and WAIT are already aligned to 8 bytes.
|
|
|
do {
|
|
|
WAIT_ACK_ACTIVE();
|
|
|
- asm("nop");
|
|
|
- asm("nop");
|
|
|
- asm("nop");
|
|
|
- asm("nop");
|
|
|
- asm("nop");
|
|
|
- asm("nop");
|
|
|
- asm("nop");
|
|
|
- asm("nop");
|
|
|
- asm("nop");
|
|
|
- asm("nop");
|
|
|
- asm("nop");
|
|
|
- asm("nop");
|
|
|
- asm("nop");
|
|
|
- asm("nop");
|
|
|
+NOP(10);
|
|
|
+
|
|
|
+
|
|
|
uint32_t ret = PDREG->IDR;
|
|
|
|
|
|
REQ_OFF();
|
|
@@ -856,19 +848,7 @@ void readDataLoop(uint32_t blockSize, byte* dstptr)
|
|
|
asm("nop");
|
|
|
} while(dstptr<endptr);
|
|
|
WAIT_ACK_ACTIVE();
|
|
|
- asm("nop");
|
|
|
- asm("nop");
|
|
|
- asm("nop");
|
|
|
- asm("nop");
|
|
|
- asm("nop");
|
|
|
- asm("nop");
|
|
|
- asm("nop");
|
|
|
- asm("nop");
|
|
|
- asm("nop");
|
|
|
- asm("nop");
|
|
|
- asm("nop");
|
|
|
- asm("nop");
|
|
|
- asm("nop");
|
|
|
+NOP(10);
|
|
|
uint32_t ret = PDREG->IDR;
|
|
|
REQ_OFF();
|
|
|
*dstptr = (byte)~(((ret ) & 0b11111111) );
|
|
@@ -1061,6 +1041,8 @@ void loop()
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+
|
|
|
LOG("CMD:");
|
|
|
|
|
|
SCSI_PHASE_CHANGE(SCSI_PHASE_COMMAND);
|