UCHAR sfm(ULONG port, PSCCB pCurrSCCB) #endif 
static UCHAR FPT_sfm(ULONG port, PSCCB pCurrSCCB) 
UCHAR sfm(ULONG port, PSCCB pCurrSCCB)#endif{	UCHAR message;	USHORT TimeOutLoop;	TimeOutLoop = 0;	while( (!(RD_HARPOON(port+hp_scsisig) & SCSI_REQ)) &&			(TimeOutLoop++ < 20000) ){}	WR_HARPOON(port+hp_portctrl_0, SCSI_PORT);	message = RD_HARPOON(port+hp_scsidata_0);	WR_HARPOON(port+hp_scsisig, SCSI_ACK + S_MSGI_PH);	if (TimeOutLoop > 20000)		message = 0x00;   /* force message byte = 0 if Time Out on Req */	if ((RDW_HARPOON((port+hp_intstat)) & PARITY) &&		(RD_HARPOON(port+hp_addstat) & SCSI_PAR_ERR))	{		WR_HARPOON(port+hp_scsisig, (SCSI_ACK + S_ILL_PH));		WR_HARPOON(port+hp_xferstat, 0);		WR_HARPOON(port+hp_fiforead, 0);		WR_HARPOON(port+hp_fifowrite, 0);		if (pCurrSCCB != NULL)		{			pCurrSCCB->Sccb_scsimsg = SMPARITY;		}		message = 0x00;		do		{			ACCEPT_MSG_ATN(port);			TimeOutLoop = 0;			while( (!(RD_HARPOON(port+hp_scsisig) & SCSI_REQ)) &&				(TimeOutLoop++ < 20000) ){}			if (TimeOutLoop > 20000)			{				WRW_HARPOON((port+hp_intstat), PARITY);				return(message);			}			if ((RD_HARPOON(port+hp_scsisig) & S_SCSI_PHZ) != S_MSGI_PH)			{				WRW_HARPOON((port+hp_intstat), PARITY);				return(message);			}			WR_HARPOON(port+hp_portctrl_0, SCSI_PORT);			RD_HARPOON(port+hp_scsidata_0);			WR_HARPOON(port+hp_scsisig, (SCSI_ACK + S_ILL_PH));		}while(1);	}	WR_HARPOON(port+hp_scsisig, (SCSI_ACK + S_ILL_PH));	WR_HARPOON(port+hp_xferstat, 0);	WR_HARPOON(port+hp_fiforead, 0);	WR_HARPOON(port+hp_fifowrite, 0);	return(message);}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/47b5d69c4aa753fcfc9b2b8d28c0660a1e25c129/FlashPoint.c/buggy/drivers/scsi/FlashPoint.c