H8にグラフィック液晶モジュールをつなぐ

グラフィック液晶対応超ミニBASIC


ラン:「BASIC? あたしの出番かしら?」
実は、起動時に液晶画面にランちゃんがくるっと回ってびしっ、とポーズを決めるようなアニメを表示しようかと思ったのですがとりあえずやめときました。
白黒アニメならMSXのACE−DRAWで描けばいいから、実現するのはそんなにむずかしくないんですが。

戻る


 とりあえずグラフィック液晶G2436対応の超ミニBASICを作りました。まだまだ発展途上で、今後もいろいろ機能追加する予定です。現在のところ、このBASICインタプリタを動かすにはパソコンもしくはシリアル端末が必要ですが、いずれキーボードを付けて自前でプログラミングできるようにしたいです。

 グラフィック液晶のコントローラはいろいろなバリエーションを作ってみたわけですが、私としては「グラフィック2画面バージョン」を本命にしようと思います。2枚のうち1枚をグラフィック専用とし、もう一枚はキャラクタ用としてソフトでフォントを描きます。「グラフィックとキャラクタの重ねあわせバージョン」も捨てがたかったのですが、将来漢字表示することも視野にいれているので、文字サイズが8×8に限定されてしまうのはよろしくありません。ソフトでフォントを描くほうが自由度が大きいです。
 また、初期の「グラフィック単画面バージョン」ではなく2画面バージョンを使いキャラクタとグラフィックを分けたのは、なんだかんだ言ってグラフィックとキャラクタが独立しているほうが楽だからです。

 キャラクタは、6×12ドットのフォントを横40桁、縦5行で表示します。将来的には12×12ドットの漢字フォントも表示したいと思っています。
 LPRINT文で文字を表示したところ。
 LINE文で線を引いてみました。

追加・変更された機能

 現在、次の文・関数があります。なお、「超ミニBASIC for H8」の標準版のキャラクタ液晶表示用の文・関数はグラフィック液晶用に改変され、一部は削除されています。(たとえばINITLCD文は必要なくなったので削除しました)

キャラクタ表示用

LCLEAR文
LCURSOR文
LPRINT文
LCHR関数
LCPOS関数

グラフィック表示用

GCLEAR文
PSET文
LINE文
RECT文
FILLRECT文
PUTTEXT文
POINT関数

キャラクタ、グラフィック両用

COLOR文


その他進化した点

 液晶とは直接関係ないのですが、BASICインタプリタ自体も実験的にいろいろ機能UPしています。たとえば

 こういった改善点は、安定して動くことが確認できしだい標準版のBASICインタプリタにも反映していく予定です。



ダウンロード

 現在、アセンブラソースのみダウンロードできます(まぁ、それをアセンブルすれば実行ファイルはできるのですが)。

グラフィック液晶G2436対応の超ミニBASICインタプリタ
のソース(cmb3052g.zip)をダウンロードする


ダウンロードしたファイルは+Lhaca、Winzipなどの解凍ソフトで解凍してください。
※このアーカイブ内には説明文などが含まれておらず、このページを見ていない人には使い方がわからないので、ここでダウンロードするぶんにはいくらダウンロードしても構いませんが、他で再配布しないでください。


文・関数の説明

・キャラクタ表示用

《 LCLEAR文 》

書式:

 キャラクタ画面を消去します。

 標準版にあった<画面のサイズ>と<自動スクロールの有無>のパラメータは現バージョンではありません。画面サイズは40桁×5行に固定で、常にスクロールします。

《 LCURSOR文 》

書式:

 カーソルを<X位置>,<Y位置>で指定された位置に移動します。現在、カーソルそのものは表示されないのですが、いずれ表示できるようにしたいです。

 標準版にはあった<カーソル形状指定>は現バージョンではありません。

《 LPRINT文 》

書式1:

書式2:

 液晶画面に数値、文字列などを表示します。使い方はシリアルターミナルに表示を行なうPRINT文とほぼ同じです。PRINT文キャストなどもPRINT文と同じものが使えます。

《 LCHR関数 》

書式:

液晶ディスプレイ上の、<X位置>、<Y位置>で指定される位置に現在表示されている文字コードを返します。

《 LCPOS関数 》

書式:

現在のカーソル位置を返します。式の値が0ならX位置、1ならY位置を返します。返ってくる値は、X位置は0〜39、Y位置は0〜5です。

普通はY位置として0〜4が返ってくるのですが、5が返ってきた場合は、「次になにか文字が表示されるとスクロールが行なわれる」という状態を表しています。

・グラフィック表示用

※グラフィック表示用の文では、座標値などの数値はー32768〜32767の範囲でなければいけません。範囲を越えているとILLEGAL FUNCTION CALLになります。

《 GCLEAR文 》

書式:

 グラフィック画面を消去します。

《 PSET文 》

書式:

 <X位置>,<Y位置>で指定される位置に点を表示します。<色>を指定した場合はその色を、省略した場合はCOLOR文で指定したデフォルト色を使います。

《 LINE文 》

書式:

 <始点X位置>,<始点Y位置>から<終点X位置>,<終点Y位置>まで直線を引きます。<色>を指定した場合はその色を、省略した場合はCOLOR文で指定したデフォルト色を使います。

《 RECT文 》

書式:

 <始点X位置>,<始点Y位置>と<終点X位置>,<終点Y位置>を対角とする長方形を描きます。<色>を指定した場合はその色を、省略した場合はCOLOR文で指定したデフォルト色を使います。

《 FILLRECT文 》

書式:

 <始点X位置>,<始点Y位置>と<終点X位置>,<終点Y位置>を対角とする長方形を塗りつぶします。<色>を指定した場合はその色を、省略した場合はCOLOR文で指定したデフォルト色を使います。

《 PUTTEXT文 》

書式1:

書式2:

 グラフィック画面に、グラフィックとして文字を描きます。色はあらかじめCOLOR文で指定しておきます。
 書式1の場合は<文字列>を表示します。書式2の場合は、<式>が指定する番地にあるC言語風文字列(0で終わる文字列)を表示します。

《 POINT関数 》

書式:

 <X位置>,<Y位置>で指定された位置のドットの色を調べます。白なら0、黒なら1が返ります。

・グラフィック・キャラクタ両用

《 COLOR文 》

書式:


 LPRINT文で表示するキャラクタの色、及びグラフィック用の文で色指定を省略したときのデフォルト色を指定します。キャラクタ用の色としては0または1が有効で、グラフィック用の色としてはPUTTEXT文は0〜5、他のグラフィック用の文には0〜2が有効です。

 なお、リセット直後はキャラクタの色、グラフィックの色ともに1(BLACK)になっています。


色名

解説

キャラクタの色


WHITE

黒地に白文字


BLACK

白地に黒文字

グラフィックの色

PUTTEXT文以外


WHITE



BLACK



NOT

反転

PUTTEXT文


WHITE

黒地に白文字


BLACK

白地に黒文字


NOT

文字部分を反転


NOT NOT

文字以外の部分を反転


WHITE TRANSPARENT

文字は白、文字以外は透過


BLACK TRANSPARENT

文字は黒、文字以外は透過