/* テキスト画面スクロール（ジャンプ）*/

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

void TextScrollJ(scrl,era,sx,sy,ex,ey,count,mode)
int sx,sy,ex,ey,count,mode;
void (*scrl)(),(*era)();
{
int i,ad,adc,y,xx,lines;
	adc=textadrs0(sx,sy); /* クリアアドレス */
	ey++;
	lines=(ey-sy-count)*CL; /* コピー行数（４ライン単位）*/
	xx=TWIDTH(&y); /* 画面x幅 */
	if (sx==0 && ex==xx-1) { /* ｘ全画面：ラスタコピー */
		if (mode&BIT0) { /* 下 */
			ad=(((ey-count)*CL-1)<<8)|(ey*CL-1);
			y=BIT0|BIT1|BIT15;
		} else { /* 上 */
			ad=((sy+count)*CL)<<8|(sy*CL);
			adc=textadrs0(0,ey-count);
			y=BIT0|BIT1;
		}
		TXRASCPY(ad,lines,y); /* SRC_DEST */
	} else { /* ｘ全画面以外 */
		y=count*T1L*TLSIZE; /* コピーアドレスオフセット */
		if (mode&BIT0) { /* 下 */
			y=-y;
			ad=textadrs0(sx,ey)-CL*TLSIZE; /* コピー先 */
		} else { /* 上 */
			ad=adc; /* コピー先 */
			adc=textadrs0(sx,ey-count); /* クリアtop */
		}
		xx=ex-sx+1; /* コピーＸ幅 */
		scrl(ad+y,ad,xx,lines);
	}
	if (!(mode&BIT5)) era(adc,xx,count*T1L);
}
