#include <sys/bios.h>
#include "linefunc.h"

#define CURSOL 510  /*カーソル*/
#define CLEAR1 511 /*空白（SCREEN1用）*/
#define CLEAR2 512 /*空白（SCREEN2用*/


/*縦画面モード用*/
/*１８列×２８行*/
/*line,before,afterは０〜２６　２７はモード表示用*/
/*範囲チェックなし（ォ*/


/*line行に文字があるかどうかチェック*/
int lineCharCheck(int line)
{
	int i;

	for(i=0; i<18; i++)
	{
		if(screen_get_char1(SCREEN1, 27-line, i)!=CLEAR1)	/*キャラ番号を返す関数*/
			return 1;										/*たぶん（ォ　　　　　*/
	}

	return 0;
}


/*line行の改行位置を返す　右端まで文字がある場合は-1*/
int lineEndCheck(int line)
{
	int i;
	
	if(screen_get_char1(SCREEN1, 27-line, 17)!=CLEAR1)
		return -1;

	for(i=16; i>=0; i--)
	{
		if(screen_get_char1(SCREEN1, 27-line, i)!=CLEAR1)
			return i+1;
	}

	return 0;
}


/*line行をクリアする*/
void lineClear(int line)
{
	screen_fill_char(SCREEN1, 27-line, 0, 1, 18, CLEAR1);

	return;
}


/*before行をafter行に移動する*/
void lineMove(int before, int after)
{
	int i, n=CLEAR1;
	int far *np;
	np = &n;

	for(i=0; i<18; i++)
	{
		n = screen_get_char1(SCREEN1, 27-before, i);
		screen_set_char(SCREEN1, 27-after, i, 1, 1, np);
	}

	screen_fill_char(SCREEN1, 27-before, 0, 1, 18, CLEAR1);

	return;
}


/*line行のnum文字目から改行してline+1行の先頭に文字を移動する*/
void lineNewPara(int line, int num)
{
	int i, n=CLEAR1;
	int far *np;
	np = &n;

	for(i=num; i<18; i++)
	{
		n = screen_get_char1(SCREEN1, 27-line, i);
		screen_set_char(SCREEN1, 27-line-1, i-num, 1, 1, np);
	}

	screen_fill_char(SCREEN1, 27-line, num, 1, 18-num, CLEAR1);

	return;
}

