[Subject Prev][Subject Next][Thread Prev][Thread Next][Subject Index][Thread Index]
[OSASK 1735] ankfont0.bin の生成(make13b).
小柳です。
エキスパートCプログラミング −知られざるCの深層
Peter van der Linden / 梅原 系 訳
アスキー出版局 / ISBN4-7561-1639-6
を読んでいて、フォントのビットパターンを定義するマクロが出てきました。
これを使うと、ankfont0.bin の生成は以下のように書けます。
従来の txt2bin と置き換えてもいいかなと思ったのですが、
コンパイルするのに、stdio を使用するため、cコンパイラのフルセット
が必要となるので、make パッケージには不向きだと思い直しました。
でも、おもしろいので紹介しておきます。
この本は C に関する解説を OS やリンカの話から問題点に入っていく形を
取っていてとてもおもしろくてお勧めです。
Intel 80x86 のメモリモデルの話も載っていて、
20ビットメモリのアドレスが、セグメントを4ビット左にシフトしてから
オフセットと加算されているというのを最近やっと知りました。
#include <stdio.h>
#define X )*2+1
#define _ )*2
#define s ((((((((0
const static unsigned char ankfont[] = {
/* 本当は全てのフォントデータがこの中に存在する */
s _ _ _ _ _ _ _ _ ,
s _ X X X _ _ _ _ ,
s X _ _ _ X _ _ _ ,
s X _ _ _ X _ _ _ ,
s X _ _ _ X _ _ _ ,
s X _ _ X _ _ _ _ ,
s _ X X _ _ _ _ _ ,
s _ X _ _ _ X X X ,
s X _ X _ _ _ X _ ,
s X _ _ X _ _ X _ ,
s X _ _ _ X _ X _ ,
s X _ _ _ _ X _ _ ,
s _ X _ _ _ X X _ ,
s _ _ X X X _ _ X ,
s _ _ _ _ _ _ _ _ ,
s _ _ _ _ _ _ _ _ ,
}
#undef X
#undef _
#undef s
int main()
{
FILE *fp;
fp = fopen("ANKFONT0.BIN", "wb");
fwrite(ankfont, sizeof(ankfont), 1, fp);
fclose(fp);
return 0;
}
--
小柳 雅明(Koyanagi.Masaaki !Atmark! nifty.ne.jp)
「人の足を止めるのは"絶望"ではなく"諦観"
人の足を進めるのは"希望"ではなく"意志"」
-- ARMS