グラフィックキャラクタとかいうやつ

グラフィックキャラクタとかいうやつ

MSXには、グラフィックキャラクタというものがある。
キーボードのGRAPHキーを押しながら特定のキーを押すと出てくる、漢字や罫線みたいなものだ。

BASICでの扱い

BASICでは、2バイトコードとして扱っている。
PRINT CHR$(1)+CHR$(n)
のようにすると、表示できるぞ。やってみよう。
あ、グラフィックキャラクタのキャラクタコードはデータパックによると、40H~5FHとなっているぞ。

グラフィックキャラクタ

1000 SCREEN 1 : WIDTH 32 : CLS
1010 FOR I=&H40 TO &H5F STEP 16
1020 	FOR J=0 TO 15
1030 		PRINT CHR$(1)+CHR$(I+J);
1040 	NEXT
1050 	PRINT
1060 NEXT

実行結果

な。

VRAMでの扱い

じゃあ、こいつらはVRAM上ではどう扱われているか。
しらべてみよう。
画面上のキャラクタコードを調べるには、VPEEKでパターン・ネーム・テーブルを読みとるのだ。
パターン・ネーム・テーブルについてはこの投稿を見たまえ。


(0,0)だと空白なのでわかりずらいので、(1,0)の「月」と(0,1)の「π」を調べてみよう。

キャラクタコードを調べる

結果、「月」は01H、「π」は10Hということが分かった。
つまり、通常のキャラクタコードではコントロールコードになっている00H~1FHに、グラフィックキャラクタが割り当てられているということだな。
通常のキャラクタコードについてはこの投稿を参考にしたまへ。


ということは、VPOKEでグラフィックキャラクタを表示するには、次のようにすればいい。

グラフィックキャラクタ VPOKE版

1000 SCREEN 1 : WIDTH 32 : CLS
1010 FOR I=0 TO &H0F
1020 	VPOKE &H1800+I,I
1030 	VPOKE &H1820+I,&H10+I
1040 NEXT
1050 PRINT : PRINT

VPOKEで表示すると改行しないので、PRINT版と実行結果が同じになるように、すこし細工をしてます。

これがどう役に立つかは自分次第だ。
じゃまた。