|
@@ -84,10 +84,10 @@ static const uint32_t scsiDbInputOutputAnd_PEREG = 0b000000000000000000111111111
|
|
|
|
|
|
|
|
|
// Put DB and DP in output mode
|
|
|
-#define SCSI_DB_OUTPUT() { PDREG->MODER = (PDREG->MODER & scsiDbInputOutputAnd_PDREG) | scsiDbOutputRegOr_PDREG; PEREG->MODER = (PEREG->MODER & scsiDbInputOutputAnd_PEREG) | scsiDbOutputRegOr_PEREG; }
|
|
|
+#define SCSI_DB_OUTPUT() { PDREG->MODER = (PDREG->MODER & scsiDbInputOutputAnd_PDREG) | scsiDbOutputRegOr_PDREG; PEREG->MODER = (PEREG->MODER & scsiDbInputOutputAnd_PEREG) | scsiDbOutputRegOr_PEREG; SCSI_OUTPUT_OUT() ;}
|
|
|
|
|
|
// Put DB and DP in input mode
|
|
|
-#define SCSI_DB_INPUT() { PDREG->MODER = (PDREG->MODER & scsiDbInputOutputAnd_PDREG); PEREG->MODER = (PEREG->MODER & scsiDbInputOutputAnd_PEREG); }
|
|
|
+#define SCSI_DB_INPUT() { PDREG->MODER = (PDREG->MODER & scsiDbInputOutputAnd_PDREG); PEREG->MODER = (PEREG->MODER & scsiDbInputOutputAnd_PEREG); SCSI_OUTPUT_IN();}
|
|
|
|
|
|
|
|
|
// BSY,REQ,MSG,CD,IO Turn off output, BSY is the last input
|
|
@@ -231,6 +231,7 @@ inline byte readIO(void)
|
|
|
|
|
|
|
|
|
#if READ_PARITY_CHECK
|
|
|
+ //BLACKSASI NEED TO BE FIXED
|
|
|
if((db_bsrr[bret]^ret)&1) // TODO fix parity calculation
|
|
|
m_sts |= 0x01; // parity error
|
|
|
#endif
|
|
@@ -299,7 +300,8 @@ bool hddimageOpen(HDDIMG *h,const char *image_name,int id,int lun,int blocksize)
|
|
|
*/
|
|
|
void setup()
|
|
|
{
|
|
|
-
|
|
|
+ gpioInit();
|
|
|
+
|
|
|
#if DEBUG > 0
|
|
|
Serial.begin(19200);
|
|
|
delay(3000);
|
|
@@ -308,7 +310,7 @@ void setup()
|
|
|
|
|
|
#endif
|
|
|
|
|
|
- gpioInit();
|
|
|
+
|
|
|
|
|
|
//Default turn termination off
|
|
|
TERMINATION_HIGH();
|
|
@@ -454,6 +456,9 @@ Should not be used due to buffers
|
|
|
}
|
|
|
|
|
|
finalizeFileLog();
|
|
|
+
|
|
|
+ // Turn on output
|
|
|
+ SCSI_OUTPUT_ENABLE() ;
|
|
|
//LED_OFF();
|
|
|
//Occurs when the RST pin state changes from HIGH to LOW
|
|
|
attachInterrupt(BOARD_SCSI_RST, onBusReset, FALLING);
|
|
@@ -526,7 +531,8 @@ inline void writeHandshake(byte d)
|
|
|
while(!m_isBusReset && !SCSI_IN(vACK));
|
|
|
|
|
|
// ACK.Fall to REQ.Raise delay 500ns(typ.) (DTC-510B)
|
|
|
- uint32_t bsrrCall = ((db_bsrr[0xff] & 0xFFBFFFFF) | 0x00000040); //BLACKSASI CHECK
|
|
|
+ //BLACKSASI NEED TO BE FIXED !!!!
|
|
|
+ uint32_t bsrrCall = ((db_bsrr[0xff] & 0xFFBFFFFF) | 0x00000040);
|
|
|
GPIOB->regs->BSRR = bsrrCall; // DB=0xFF , SCSI_OUT(vREQ,inactive)
|
|
|
|
|
|
// REQ.Raise to DB hold time 0ns
|