#include "defines.h"
#include <iocslib.h>
#include <stdio.h>

int CutDisp2(FILE *fp,int sx,int sy,int col)
// 古いmonotone.xのcutファイルを表示する
// 画面設定は外部で行っておくこと
{
#define	LSIZE	85			// １ラインのデータサイズ(LSIZE*8ドット分)
#define	LSIZE16	((LSIZE*8)/16)		// 16ドット単位で行ける分
#define	LSIZE8	(LSIZE-LSIZE16*2)	// あまり８ドット（１のはず）
unchar buff[LSIZE],*b;
struct LINEPTR lp;
int i;
	// ヘッダーチェック
	if (fread(buff,10,1,fp)==0) return(1); // read error
	if (memcmp(buff,"\x02",2)) return(2); /* monotone-CUTでない;"\x02"=$02,00 */
	
	// 本当はヘッダーからデータサイズを読み出した方が良いが、
	// 現実に680*480以外のデータが存在しないので手抜き
	// xドット数 [3][4] 68形式
	// yドット数 [5][6] 68形式
	
	lp.y1=lp.y2=sy;
	lp.color=col;
	while (fread(buff,LSIZE,1,fp)==1) {
		b=buff;
		lp.x1=sx;
		// １６ドット単位で行けるところ
		for (i=0;i<LSIZE16;i++) {
			lp.x2=lp.x1+16-1;
			lp.linestyle=~*(unsint *)b; // データは反転させる
			LINE(&lp);
			lp.x1+=16;
			b+=sizeof(unsint); // 16bit
		}
		#if LSIZE8!=0
		// あまり
		lp.x2-=8; // 最後は８ドットだから
		lp.linestyle=((~*b)<<8); // ラインスタイルは１６ビット指定だから
		LINE(&lp);
		#endif
		// 次のラインへ
		lp.y1++;
		lp.y2++;
	}
	return(0);
}

#if 0
void main()
{
FILE *fp;
	fp=fopen("pekin3.cut","rb");
	if (fp!=NULL) {
		CRTMOD(0x10);
		G_CLR_ON();
		CutDisp2(fp,0x2c,0x10,15);
		fclose(fp);
	}
}
#endif
