- 作者: 川合秀実
- 出版社/メーカー: 毎日コミュニケーションズ
- 発売日: 2006/03/01
- メディア: 単行本
- 購入: 36人 クリック: 735回
- この商品を含むブログ (299件) を見る
28日目はファイル操作と日本語のサポートを行う。
ファイル操作については、APIをいくつか追加した。
- ファイルのオープン
- EDX = 21
- EBX = ファイル名
- EAX(戻り値) = ファイルハンドル
- ファイルのクローズ
- EDX = 22
- EAX = ファイルハンドル
- ファイルのシーク
- EDX = 23
- EAX = ファイルハンドル
- ECX = シークのモンド(0=シークの原点はファイルの先頭、1=シークの原点は現在のアクセス位置、2=シークの原点はファイルの終端)
- EBX = シーク量
- ファイルサイズの取得
- EDX = 24
- EAX = ファイルハンドル
- ECX = ファイルサイズ取得モード (0=普通のファイルサイズ、1=現在の読み込み位置はファイルの先頭から何バイト目か、2=ファイルの終端から見た現在位置までのバイト数)
- EAX = ファイルサイズ(OSから返される)
- コマンドラインの取得
- EDX = 26
- EBX = コマンドラインを格納する番地
- ECX = 何バイトまで格納できるか
- EAX(戻り値) = 何バイト格納したか
というわけで、typeipl
コマンドを実装して、ipl10.nas
を表示するコマンドを作った。
図. `typeipl` コマンドを作って、ファイルを表示する。
次に、日本語対応を行う。日本語フォントを格納したファイルは、edimgコマンドなどを作って加工するようなのだが、これはとりあえずそのまま使わせてもらうことにした。 nihongo.fnt ファイルはそのままディスクイメージに挿入する。
そしたら、日本語の表示を実装する。基本は日本語Shift JISだが、EUCも実装していく。
最初に勘違いしていたのだが、フォントのアドレスを計算するのに、文字コードをunsigned char
ではなくchar
で計算していたため、符号付きとして計算されてしまっていた。
これで随分とはまってしまった。
void putfonts8_asc (unsigned char *vram, int xsize, int x, int y, char c, unsigned char *s) // unsigned char *s を最初char *s としており、符号付として計算されてしまった。