漢字ROMからフォントデータを読み出す

「漢字ROMからフォントデータを読み出す」の編集履歴(バックアップ)一覧はこちら

漢字ROMからフォントデータを読み出す」(2013/01/11 (金) 00:27:23) の最新版変更点

追加された行は緑色になります。

削除された行は赤色になります。

漢字フォントROMはI/Oポートの0xD8-0xDBに接続されている。 漢字フォントは16x16ドットのフォントデータを持っている。 このフォントROMは漢字の使用頻度によって第一水準、第二水準という区分があり、 第一水準の漢字フォントをリードする場合は、0xD8,0xD9にアドレスを出力する。 第二水準漢字フォントをリードする場合は0xDA,0xDBにアドレスを出力する。 データの読み出しは第一水準の場合、アドレス送出後、0xD9を32回リードする。 第二水準の場合はアドレス送出後、0xDBを32回リードして16x16フォントデータを得る。 漢字ROMフォントへアドレス出力する場合は2byteを必要とするが、この時のアドレスは 区点コード(漢字フォント格納形式)という特殊な形式で扱う必要がある。 直接文字コードであるSJISコードを出力して漢字フォントを得る仕組みではない。 区点コードアドレスは全てのアドレス領域が利用されている訳ではなく、一部のアドレス範囲に 漢字フォントが割り当てられており、通常それらのフォントマップはアドレスが10進数で記載 されている。 区点コードの一覧表はインターネット上に幾つかの資料を見つける事が出来る。 フォントデータのフォーマットは16x16のビットマップ文字を4分割したピクセルマップとして 記録されている。 フォントサイズは一つなので、16x12ドットなどはフォントデータから新たに作ることになる。 漢字ROMフォントのデータはそれほど大きいものではなく、第一、第二水準をあわせても 最大で256KB程度。 漢字区点コードの96,32を読み出したい場合ROMBASICでは以下のコードとなる 10 dim f%(32) 20 out &hd8,96 30 out &hd9,32 40 for i=0 to 31 50 f%(i)=inp(&hd9) 60 print f%(i) 70 next i Cでは以下のようなコードとなる。 #include <stdio.h> void main(void){ unsigned char f[32]; int i; outp(0xd8,96); outp(0xd9,32); for(i=0; i<32; i++){ f[i]=inp(0xd9); printf("%d \n",f[i]); } }

表示オプション

横に並べて表示:
変化行の前後のみ表示:
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。