|  | @@ -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
 |