// SCSI Writeキャッシュサブルーチン

#include <scsi.h>
#include "ascsi.h"
#include "defines.h"

#define	DEBUG	0

int _S_CacheWriteSub(S_CACHE_BUFF *scb)
// キャッシュに書き出すサブルーチン
{
int ret;
	#if DEBUG
	printf("sector0=$%08x,nextblock=%d,id=%d,blksz=%d\n"
			,scb->sector0,scb->nextblock,scb->id,scb->blksz);
	#endif
	ret=S_SecWrite(scb->sector0,scb->nextblock,scb->id,scb->blksz,scb->cache);
	if (scb->mode&S_CACHE_OFFSET) { // オフセット表書き込み
		int i=0;
		unlong ofst;
		while ((ofst=scb->sectors[i++].sec)!=0) {
			ret=S_SecWrite(scb->sector0+ofst
				,scb->nextblock,scb->id,scb->blksz,scb->cache);
			if (ret) break; // 途中でエラーが出たら打ち切り
		}
	} // 単一書き込み時は１つで終わり
	#if DEBUG
	printf("ret=%d\n",ret);
	#endif
	return(ret);
}
