第6章 サンプルプログラムリスト

ここでは、ビジュアルメモリSDKに付属のサンプルプログラムを掲載します。

インフォメーションフォークのソースファイル“IFORK.ASM”の説明、“GHEAD.ASM”の詳細は割愛します。

注意

すべてのサンプルプログラムは、タブ(09H)を4(バイト)にしてご覧ください。


6-1 LCDパターン表示


このサンプルでは、LCD(XRAM)に単純なパターンを表示させます。

51,55,59,63,67行目でパターンを指定し、matrixルーチンでLCD全体にこのパターンを描画します。

001	; Tab width = 4
002	
003	;----------------------------------------------------------------------------
004	; ** LCD表示処理サンプル1 **
005	;
006	; 表示用RAMにデータを転送してLCDに単純なパターンを表示する
007	;----------------------------------------------------------------------------
008	; 1.01 990208 SEGA Enterprises,LTD.
009	;----------------------------------------------------------------------------
010	
011	chip	LC868700			; チップの種類をアセンブラに指定
012	world	external			; 外部メモリ用プログラム
013	
014	public	main				; ghead.asm から参照されるシンボル
015	
016	extern	_game_end			; アプリケーション終了
017	
018	
019	; **** システム定数の定義 ***************************************************
020	
021								; OCR(発振制御レジスタ)設定値
022	osc_rc		equ 04dh		;	システムクロックに内蔵RC発振を指定
023	osc_xt		equ 0efh		;	システムクロックに水晶発振を指定
024	
025	
026	; *** データセグメント ******************************************************
027	
028			dseg				; データセグメント開始
029	
030	r0:		ds		1			; 間接アドレッシングレジスタ r0
031	r1:		ds		1			; 間接アドレッシングレジスタ r1
032	r2:		ds		1			; 間接アドレッシングレジスタ r2
033	r3:		ds		1			; 間接アドレッシングレジスタ r3
034			ds		12			; その他のシステム予約レジスタ
035	
036	
037	; *** コードセグメント ******************************************************
038	
039			cseg				; コードセグメント開始
040	
041	; *-------------------------------------------------------------------------*
042	; * ユーザープログラム														*
043	; *-------------------------------------------------------------------------*
044	main:
045			mov		#0f0h,c		; 表示用データ
046			call	matrix		; LCDにパターンを表示
047			set1	PCON,0		; HALTモードに移行して割り込みを待つ。
048								; ベースタイマの割り込みがかかることにより
049								; HALTモードは解除され処理が先に進む。
050	
051			mov		#00fh,c		; 以下同様に何パターンか表示する
052			call	matrix
053			set1	PCON,0
054	
055			mov		#0cch,c
056			call	matrix
057			set1	PCON,0
058	
059			mov		#033h,c
060			call	matrix
061			set1	PCON,0
062	
063			mov		#055h,c
064			call	matrix
065			set1	PCON,0
066	
067			mov		#0aah,c
068			call	matrix
069			set1	PCON,0
070	
071								; ** [M](モード)ボタンチェック **
072			ld		P3
073			bn		acc,6,finish ; [M]ボタンが押されていたらアプリ終了
074	
075			jmp		main		; 繰り返す
076	
077	finish:						; ** アプリケーション終了処理 **
078			jmp		_game_end	; アプリケーション終了
079	
080	
081	; *-------------------------------------------------------------------------*
082	; *	LCD全体にパターンを表示する												*
083	; * 入力	c: 基本表示パターン												*
084	; *-------------------------------------------------------------------------*
085	matrix:						; **** LCD 一面を描く ****
086	
087			push	acc			; 各レジスタを退避する
088			push	b
089			push	c
090			push	XBNK
091	
092	xb0_a:	mov		#000h,XBNK	; 表示用RAMのバンクアドレスを指定(BANK0)
093			mov		#080h,b
094			 
095	la1:	ld		c			; c:表示データ
096			call	line2		; 2行表示
097			ld		b			; 2行先へアドレスを進める
098			add		#010h		;
099			st		b			;
100			bnz		la1			; バンクの終端まで繰り返し
101			
102	xb1_a:	mov		#001h,XBNK	; 表示用RAMのバンクアドレスを指定(BANK1)
103			mov		#080h,b
104	
105	la2:	ld		c			; c:表示データ
106			call	line2		; 2行表示
107			ld		b			; 2行先へアドレスを進める
108			add		#010h		;
109			st		b			;
110			bnz		la2			; バンクの終端まで繰り返し
111	
112			pop		XBNK		; 退避レジスタの復帰
113			pop		c
114			pop		b
115			pop		acc
116	
117			ret					; matrix終了
118	
119	
120	line2:						; **** LCD 2行分表示 ****
121	
122			push	acc			; 各レジスタを退避する
123			push	b			;
124			push	c			;
125			push	PSW			;
126			push	OCR			;
127			mov		#osc_rc,OCR	; システムクロックを指定
128			set1	PSW,1		; データRAMバンク1を選択
129			st		c			; 表示データを c に退避
130			ld		b			; 表示用RAMアドレスを、r2にセット
131			st		r2			;
132	
133	lp1:						; **** 1行目表示処理 ****
134			ld		c			; 表示データを表示用RAMに転送
135			st		@r2			;
136			inc		r2			; 次の表示位置にアドレスを移動
137			ld		r2
138			and		#00fh		; 表示位置が 1行目右端にくるまで..
139			xor		#006h		; 
140			bnz		lp1			; 繰り返し
141			
142			ld		c			; cレジスタのビットパターンを反転する
143			xor		#0ffh		;
144			st c				;
145	
146	lp2:						; **** 2行目表示処理 ****
147			ld		c			; 表示データを表示用RAMに転送
148			st		@r2			;
149			inc		r2			; 次の表示位置にアドレスを移動
150			ld		r2			;
151			and		#00fh		; 表示位置が 2行目右端にくるまで..
152			xor		#00ch		;
153			bnz		lp2			; 繰り返し
154	
155			pop		OCR			; 退避レジスタを復帰
156			pop		PSW			;
157			pop		c			;
158			pop		b			;
159			pop		acc			;
160			
161			ret					; line2終了
162	
163			end

[]   [INDEX]   []

(C)SEGA ENTERPRISES, LTD., 1998