#include "defines.h"
#include "acdata.h"
#include "FAT32.h"
#include "ascsi.h"
#include <error.h>

#define	DEBUG	0
#if DEBUG
#include <stdio.h>
#endif

int CluRead(FILE32 *fp)
// １クラスター読み出し(FAT対応)->fp.buff
// return : =0:ok , !=0:error
{
int ret;
unlong sec;
	// ＦＡＴ→セクター変換
	sec=Fat2Sec(fp); // FAT番号からセクター番号に変換する
	#if DEBUG
	printf("FAT:%08x->Sec:%08x\n",fp->fat,sec);
	#endif
	// １クラスタ分一気読み込み
	ret=S_SecRead(sec++,(long)fp->clu1sec,fp->scsiid,fp->blksz,fp->buff);
	if (ret==0) { // 正常に読めた時
		fp->oldfat=fp->fat; // 今読んだFAT番号を記録
		fp->ofst=0;
		// 次のクラスタへ
		sec=NextFat(fp,fp->fat); // secは仮変数
		if (sec==0L) ret=2; // FAT読み込みに失敗した
		fp->fat=sec;
		#if DEBUG
		printf("次FAT:%08x\n",fp->fat);
		#endif
	} else	fp->error=ENODEV;
	return(ret);
}
