見出し画像

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になる信号線だ。

なお、現時点では表示の処理の関係上、文字と文字の間に0が入るようになっている

2バイト→画像データ変換

画像データの位置の特定

使用バイト数の仕分けができたら順番に届く1バイト2つを2バイトにまとめ、そのデータから対応するフォントデータを回収する。
今回はフォントデータを小さくし、不具合があったときのデータの確認を楽にするために、0x8000~0x9FFFや0xE000~0xFCFFを上位3ビットを捨てて、0x0000~0x1FFFに変換し、2つのフォントデータとして保存・利用することにした。

右下で物理的にビットを切り捨ててる

3クロックかけて、上位ビット格納→下位ビット格納→後工程に送信&リセットを行っており、各クロックの動作切り替えは画像左のクロックとデコーダーにて、フォントデータの開始位置の指定は画面右の15ビットのコードと0x18(24)をかける場所で行っている。

なお、上から2つ目のビットで0x8000~のデータか、0xE000~のデータかを振り分けている。(右下に伸びている信号)

フォントデータの取得部

全角のフォントデータは24バイト。8バイト3つを6バイト4つに変換してディスプレイに流すようにしている。

最終的な動作はこんな感じ。

この表示を使って一行のディスプレイに文字を表示するのが次のタスクかな。

この記事が参加している募集

#全力で推したいゲーム

13,613件

#つくってみた

19,209件

この記事が気に入ったらサポートをしてみませんか?