「OSを作れる」「仕組みが学べる」という言葉に惹かれて、プログラミング軽くかじった程度の私が、OSを自作しようと思い立ちました。

2019年の目標の一つは『OS自作入門でOSを作る』です。

目標を次のように設定。

「2019年3月31日までに、完読してわからないなりにもOSを自作してみよう。」

 

 

これまで5日ほどかかって、ブートセクタというものをつくってきましたが、一度、頭の中を整理するためにまとめる日をつくりました。それが本日です。

 

さて、今までやってきた流れとしては、

  • バイナリエディタ(実は16進数エディタ)で機械語を入力し、OSもどきを作る。
    helloos.img:CPUにはわかりやすいが、人には難解で大変。
  • アセンブラでソースプログラムを書き、同じようにOSもどきを作る。
    helloos.nas<helloos0:機械語からアセンブラへ。
  • アセンブラで、命令などを用いたソースプログラムを書き、よりシンプルになったOSもどきを作る。
    22行くらいだけど、意味がわからない。helloos.nas<helloos1
    48行くらいになったけど、もうすこし意味がわかるように。helloos.nas<helloos2
    プログラム本体の書き直しと、その説明。helloos.nas<helloos3
  • レジスト、メモリについて学ぶ。
  • 512バイトのブートセクタとそれ以外に整理。helloos.nas→ipl.nas<helloos4
  • Makefileの導入。Makefileを動かせるようにmake.batを準備。ipl.nas<hellos5
  • 最初のブートセクタ以降を作りながら、その説明とフロッピーディスクについて。
    ipl.nas<harib00a
    エラーになったらやり直す。ipl.nas<harib00b
    18セクタまで読む。ipl.nas<harib00c
    10シリンダ分まで読む。ipl.nas<harib00d
    →ここまでで、ディスクのうちの10 × 2 × 18 × 512 = 184,320バイトが読み込まれた。
  • OS本体を作り始める。haribote.nasの導入。
    ディスクイメージを作れるように(?)改造。ipl.nas<harib00e
    ブートセクタからOS本体を実行できるように変更。haribote.nas, ipl.nas<harib00f
    OS本体の動作を確認するために画面モードを切り替える。haribote.nas, ipl.nas→ipl10.nas(10シリンダ分だから)<harib00g

 

細かいことはあまりわからないままですが、こうやって振り返りながら書き出してみると、どんなことをやってきたかくらいは理解できつつありますね。

 

 

今後は、アセンブラ開発からC言語での開発に移るそうです。それに伴い32ビットモード(CPU)へシフト。

そのためには、BIOSでやるべきことをやり切ることが必要(BIOSは16ビット)。

ということで、次のプログラムを書いています。

 

・harib00h

キーボードの状態をBIOSに教えてもらう。

起動時の情報を「BOOT_INFO」として、画面モードに関する情報をメモリにメモ。

VRAMの記述については、(AT)BIOSページ http://oswiki.osask.jp/?(AT)BIOS

 

以上。

スポンサーリンク