Turing Completeでtelnetの公告を表示したい その2
あらすじ
前回はとりあえず、6x8ドットディスプレイの仕様を確認し、1行の電光掲示板っぽいものを作成した。おおよそ仕様を把握したため、Shift JISでエンコードされたテキストファイルを読み込むことができるようにする。
Shift JISについて
Shift JISは、ざっくり言うとアルファベットなどを1バイト、日本語を2バイトで表現する文字のエンコーディング方法で、簡単な説明はWikipediaを見るのが一番早いと思う。
Turing Completeで扱う場合、最初のバイトが0x80~0x9Fの時、もしくは0xE0~0xFFのとき、後に続くバイトと合わせて全角文字一文字を表すといえる。
この範囲の時、上位から2,3個目のビットは常に同じになるため、このような回路で簡単に仕分けることができる。
右上が半角処理中にONになる信号線、下部が全角処理中にONになる信号線だ。
2バイト→画像データ変換
画像データの位置の特定
使用バイト数の仕分けができたら順番に届く1バイト2つを2バイトにまとめ、そのデータから対応するフォントデータを回収する。
今回はフォントデータを小さくし、不具合があったときのデータの確認を楽にするために、0x8000~0x9FFFや0xE000~0xFCFFを上位3ビットを捨てて、0x0000~0x1FFFに変換し、2つのフォントデータとして保存・利用することにした。
3クロックかけて、上位ビット格納→下位ビット格納→後工程に送信&リセットを行っており、各クロックの動作切り替えは画像左のクロックとデコーダーにて、フォントデータの開始位置の指定は画面右の15ビットのコードと0x18(24)をかける場所で行っている。
なお、上から2つ目のビットで0x8000~のデータか、0xE000~のデータかを振り分けている。(右下に伸びている信号)
全角のフォントデータは24バイト。8バイト3つを6バイト4つに変換してディスプレイに流すようにしている。
最終的な動作はこんな感じ。
この表示を使って一行のディスプレイに文字を表示するのが次のタスクかな。
この記事が気に入ったらサポートをしてみませんか?