« 2008年7月 | トップページ | 2009年5月 »

2008年8月31日 (日)

OS自作入門の復習

3日目の第一章のプログラムharib00aを基に
自分なりに改造しています。ただし、基本的には
本書の内容にそって、各種のファイル等を自分で
打ち込んでいるだけですが・・・
今日は、その内容をまとめたので書いてみたいと思います。

改造内容

その1
ipl.nasを改造し、フロッピーディスク(FP)のデータの読み込みが
終わったら、終わったことが分かるように、DOS画面にメッセージを
出すようにしました。
INT0x10という一文字表示関数を使っています。

その2
FPの18セクタ読み込み出来るように改造。

ただし、第二章のエラー5回までという内容は
入っていない。したがってキャリーフラグがエラーの
時だけ、エラー表示が出る。つまりフロッピーディスクが
粗悪品で読み込みがうまくいかない場合、止まってしまう。

その3
haribote.nasという新しいファイルを追加。
これがOSの本体になる。今のところhlt命令のみ書いてある。

Makefileの内容も上に合わせて変更。
haribote.imgをiplmas.nasとharibote.nasを合わせて作るようにする。

その4
画面モードをVGAグラフィックス、320×200、8bitカラーモードに
変更した為、OS本体であるharibote.nasの方に、このカラー画面で
文字を表示させるプログラムを追加した。(DOS画面上ではなくて・・・)
文字表示は、INT0x10関数を使用しており、ここまでは16ビットモードである。

その5
P61の32ビットモードになると、BIOSが使えない為、
プログラムは大幅変更になる。なので、改造はここで終了する。

つもりだったが、今後の勉強のため自力で32ビットモードに移行する。

まず、カラー画面での文字表示は、32ビットモードだと使えない為、
やめた。
というのは、INT0x10はBIOSの関数であり、16ビットモード用の機械語で
ある為です。
haribote.nasをasmheadmas.nasとbootpack.cに分け、
bootpack.cは新規で作成した。bootpack.cには、まだ、hlt命令しかなく、
しかもそのhlt命令はC言語では書けない為、
アセンブリ言語で別ファイルに書いています。

Makefileをharib00i(P63)を参考に変更した。具体的にはharibote.nasが
二つのファイルに分かれる為、各種の生成規則を追加した。
ここで注意すべきは、iplとasmheadはそれぞれiplmasとasmheadmasという
名前に変えてある。

また、harib00jを参考に、naskfunc.nasを新規に作成した。
nasukfun.nasは、C言語では書けない命令をアセンブリ言語で
書く為です。hlt命令を書いてあります。

その6
真っ黒な画面を白あるいはしましま模様に変える為、
bootpack.cにVRAM a0000に数字を書き込む
関数write-mem8を追加した。
当然naskfunk.nasにMOV命令を使った
write-mem8の中身を書いた。

その7
上の内容は、ポインタを使えばVRAMに数値を書き込むことが
出来るので、ポインタを使って、bootpack.cを変更した。(P77)

とりあえず今回はここまでです。

2008年8月10日 (日)

ひさしぶりのOS自作入門

最近は、いろいろ忙しくてOS自作入門を

進めることが出来ませんでした。

しかし、いまは夏休みなので、また再開です。

すっかり内容を忘れているので、一から

やり直していますが、いま3日目です。

8bitカラーモード画面で、文字表示をさせる

改造をしました。

Chapter3 おもしろいなー。

« 2008年7月 | トップページ | 2009年5月 »