実際にデータを送って制御してみよう

さて、実際にデータを液晶パネルに送ってみよう・・・ ということで、 プログラムリストの登場だ。
このプログラムは、とりあえずキャラジェネに格納されているキャラクタを 全て表示するプログラムで、6ヶ所ある表示エリア全部に同一キャラクタを 表示して入力待ちになり、何かのキーを押すと次のキャラクタを表示し・・・  という単純なものだ。
このプログラムを使用すれば、右の写真のように ふだん滅多にお目にかかれないようなキャラクタ(?!)も見る事ができる。


100 '*** 綱取物語・液晶パネルテストプログラム ***
110 DEFINT A-Z
120 D0=&HB0:GOSUB 500
130 BEEP:A$=INPUT$(1)
140 FOR D0=&H150 TO &H1FFF STEP &H3B
150  GOSUB 500
160  A$=INPUT$(1)
170 NEXT
180 STOP
500 '*** データ書き込みルーチン(全キャラクタ) ***
510 FOR I=0 TO 5
520  GOSUB 1000
530 NEXT
540 OUT &H40,0                  'Inactive
550 OUT &H46,&HE
560 OUT &H46,&HF
570 RETURN
1000 '*** データ書き込みルーチン(1キャラクタ) ***
1010 DL=D0 MOD 256: DH=D0 \ 256
1020 OUT &H40,DL                'LSB Data Set
1030 OUT &H46,&HE
1040 OUT &H40,DH                'MSB Data Set
1050 OUT &H46,&HF
1060 OUT &H40,DL                'LSB Data Set(Dummy)
1070 OUT &H46,&HE
1080 OUT &H40,DH OR &H40        'MSB Data Set and Write
1090 OUT &H46,&HF
1100 RETURN

プログラムの説明

プログラムの流れを簡単に説明しておくと、まず最初から180行までが 初期化とメインループだ。 データ(ROMアドレス)の設定とキー入力 等を行い、6ヶ所の表示エリア全部に表示を行うルーチンを呼び出している。
続いて500〜570行が、6ヶ所の表示エリアに同じキャラクタを表示する ルーチン、1000〜1100行が、表示エリア1ヶ所にキャラクタを 表示するルーチンだ。

1000行からの1キャラクタ表示ルーチンだが、ここでは D0 という変数に 渡されたROMアドレスを、まず上位バイトと下位バイトに分割している。
ここで、I/Oポート40Hは98プリンタのデータポート、 46Hは同じくストローブ信号制御ポートだ。
この記事で使用しているインターフェースにデータを出力するには・・・

1. ポート40Hに下位バイトのデータを書き込む。
2. ポート46Hに0EHを書き込む。
3. ポート40Hに上位バイトのデータを書き込む。
4. ポート46Hに0FHを書き込む。
以上の手順で16ビットのデータが出力できる。

液晶パネルに実際にデータを受け取らせるためには、このあとでストローブ (液晶パネルの)を制御しなくてはならない。  具体的な手順は、上位バイトの該当ビットをON(ここでは40HとORを取る) し、上記の1〜4の手順を再度実行すればよい。
また、一画面分の書き込み終了時には、念のためオール0のデータを書いておこう。


この実験の今後

とりあえず任意のキャラクタを表示することはできたのだが、これだけでは 大した事はできない。 この「綱取物語」の液晶パネルには 特殊な機能というのがほとんどないのだが、逆に機能のない分 解析は容易な筈だ。
今回は手を付ける余裕がなかったのだが、やってみたいことの一つに 「ROMの書き換え」がある。 好きなパターンを焼き込んでおいて、 自分だけのグラフィック端末にしてしまうのだ。
とりあえず、

2M以上のROMが扱えるROMライターが欲しい!

きちんとした機械で読み取った訳でないので断言できないのだが、 色に対応したキャラクタがきちんと並んでいるように見えたので、 意外と簡単に実現できるかも知れない。 お楽しみに・・・



トップメニューへ

前のページへ

電子工作メニューへ