グラフィックキャラクタとかいうやつ
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版と実行結果が同じになるように、すこし細工をしてます。
これがどう役に立つかは自分次第だ。
じゃまた。