******************************************************
* フォント加工：Ｘ＝８／１２／１６／２４ドット全対応
*	      ：Ｙ＝１６／２４ラインのみ対応
******************************************************
*	半角、１／２	全角
*	８＊１６	１６＊１６
*	１２＊２４	２４＊２４
*	１／４は　８＊　８→　８＊１６
*		１２＊１２→１２＊２４に拡張して渡すこと
******************************************************
* void fontatrb(_FNTBUF *fnt,int mode)
* V2.0 : 高速化＆取消線３種類->１種類化
* V3.0 : さらに高速化（word/byte境界を区別＋縦ライン数16/24に特化）
* V3.1 : 中抜き文字サポート

	.text
	.xdef	_fontatrb	* Ｃインターフェース
_fontatrb:
	move.l	4(sp),a1	* a1.l <- 構造体アドレス
	move.w	8+2(sp),d0	* d0.w <- mode
	cmp.w	#13,d0		* 実際には１３までない
	bcs	fontatrbs	* ok
ret:	rts
	*
	.xdef	fontatrbs	* アセンブラーインターフェース
	* a1.l <- 構造体アドレス
	* d0.w <- mode
fontatrbs:
	move.w	(a1)+,d1	* xl
	move.w	(a1)+,d2	* yl
	subq.w	#1,d2		* yl-1 for dbf
	
	lea	jtbl2(pc),a0	* x=24用ジャンプテーブル
	cmp.w	#24,d1
	beq	f1
	lea	jtbl0(pc),a0	* x=8用ジャンプテーブル
	cmp.w	#8,d1
	beq	f1
	lea	jtbl1(pc),a0	* x=12/16用ジャンプテーブル
f1:	*lsl.w	#2,d0		* mode*4
	add.w	d0,d0
	add.w	d0,d0
	movea.l	(a0,d0.w),a0	* ジャンプアドレス
	jmp	(a0)		* returnは飛び先からになる

******************************************************
* フォント加工ルーチン定義（外部）
	* x=8
	.xref	reverse0
	.xref	hlight0
	.xref	ud0
	.xref	lr0
	.xref	lrot0
	.xref	rrot0
	.xref	kasure0
	.xref	shaji0
	.xref	kesi0
	.xref	kasen0
	.xref	naka0

	* x=12/16
	.xref	reverse1
	.xref	hlight1
	.xref	ud1
	.xref	lr1
	.xref	lrot1
	.xref	rrot1
	.xref	kasure1
	.xref	shaji1
	.xref	kesi1
	.xref	kasen1
	.xref	naka1

	* x=24
	.xref	reverse2
	.xref	hlight2
	.xref	ud2
	.xref	lr2
	.xref	lrot2
	.xref	rrot2
	.xref	kasure2
	.xref	shaji2
	.xref	kesi2
	.xref	kasen2
	.xref	naka2

******************************************************
* ジャンプテーブル
* 文字属性１６ビット分

*	.data			* (pc)アクセスするため.text内に入れた
jtbl0:	* x=8
	* color 2bit		* mode	bit
	.dc.l	reverse0	* 0	2
	.dc.l	hlight0		* 1	3
	.dc.l	ud0		* 2	4
	.dc.l	lr0		* 3	5
	.dc.l	lrot0		* 4	6-+
	.dc.l	rrot0		* 5	7-+-合わせて２ビット
	.dc.l	kasure0		* 6	8
	.dc.l	shaji0		* 7	9
	.dc.l	kesi0		* 8	10
	.dc.l	kasen0		* 9	11
	.dc.l	naka0		* 10	12
	.dc.l	ret		* 11	13
	.dc.l	ret		* 12	14
	.dc.l	ret		* 13	15

jtbl1:	* x=12/16
	* color 2bit		* mode
	.dc.l	reverse1	* 0
	.dc.l	hlight1		* 1
	.dc.l	ud1		* 2
	.dc.l	lr1		* 3
	.dc.l	lrot1		* 4
	.dc.l	rrot1		* 5
	.dc.l	kasure1		* 6
	.dc.l	shaji1		* 7
	.dc.l	kesi1		* 8
	.dc.l	kasen1		* 9
	.dc.l	naka1		* 10
	.dc.l	ret		* 11
	.dc.l	ret		* 12
	.dc.l	ret		* 13

jtbl2:	* x=24
	* color 2bit		* mode
	.dc.l	reverse2	* 0
	.dc.l	hlight2		* 1
	.dc.l	ud2		* 2
	.dc.l	lr2		* 3
	.dc.l	lrot2		* 4
	.dc.l	rrot2		* 5
	.dc.l	kasure2		* 6
	.dc.l	shaji2		* 7
	.dc.l	kesi2		* 8
	.dc.l	kasen2		* 9
	.dc.l	naka2		* 10
	.dc.l	ret		* 11
	.dc.l	ret		* 12
	.dc.l	ret		* 13

******************************************************
* フォント加工中間ワークエリア

	.even
	.bss
	.xdef	fontwork
fontwork:	* font work
	.ds.b	4*24		* 24*24のフォントが処理出来る分
				* ただし高速化のためlongword単位分
******************************************************
	.end
