なる研>電子工作小品集>漢字ROM(仮) |
EUC,JIS,などいろいろありますが、2バイト固定なのとwindowsが標準にしてるので扱いやすいので、ここではShift-JISを使いました。
2バイトというと、0x0000から0xFFFFまであるのですが漢字はこの1/8程しかありません。スカスカです。 ROMを効率的に(略
Shift-JISのコードは、2バイトで構成されてまして、 上位バイトはANKコード(右表)の未定義領域[0x80,0x9f],[0xE0,0xFF]になるように、 下位バイトはANKコードの制御文字以外のコード[0x40,0x7E],[0x80,0xFF]になるように、 なってます。
windowsでは記号とJIS第一水準漢字、JIS第二水準漢字、のほかに、
NEC特殊文字、NEC選定IBM拡張文字、IBM拡張文字、もShift-JISのコード上に配置されています。
0x0000 から 0xffff までのバイナリファイルをみると分布が大体分ります。
(?_?)つ わかんねーよ
ちょっとイイカゲンですが、Shift-JISコードへの各文字群の分布は右のようになっとります。
これをもとにShift-JISを対応する文字のビットマップの先頭アドレスへ変換する関数とその逆関数を作ります。
灰色の部分をを削ったバイナリファイル
これだけだと半角文字の表示ができないので、0x85??に半角ANKを割り当てました。
windowsに登録されているフォントをビットマップフォントに変換するプログラム書きました。
フォント名と幅高を入力するとfont.datを吐きます。
仕組みは、windowsに描画させてPrintScreenしてるだけです。
コンパイラはActiveBASICの古いバージョンです。
32x32dot文字の場合、font.datは32x32x8640/8=1080k[Byte]もあるので並のEEPROMには収まりません。 ここで最近大量に購入した4MB MMCの出番です。安い!美味い!早い!です。 基盤に半田付けしてしまってもかまいませんが、抜き差しできると「交換してフォントが変わる(おぉぉぉ!!)」ということができますので、ソケットを使いました。
今回はMMCが3.3Vなのにマイコンは5Vなのでレベル変換をしないといけません。
テスタで測ったら、案の定3.9Vも出てまして、4.7kΩの抵抗を負荷にしたら3.3Vになりました。 【描きかけ です】