起動するまでの長い道のり プロテクト・モード移行編(2) セグメンテーション始動の巻

だいぶ間が空いてしまった(汗)。いよいよ実際にセグメンテーションを動かして、32ビットコードを実行するプロテクト・モードへ移行する。64KBの壁よさらば。今回のソース(setup.s)

起動するまでの長い道のり プロテクト・モード移行編(1) セグメンテーション薀蓄の巻

プロテクト・モードへの移行は起動処理の山場の一つだ。リアル・モードからプロテクト・モードに移って初めて32ビットのコードが動き、64KBの壁を破って4GBまでの全メモリにアクセスできるようになる。 x86系CPUでプロテクト・モードに移行するには、最低限…

Sourceforge.jpにソースコードをアップ

ここまでのソースコードをSourceforge.jpのSVNリポジトリにアップロードしました。 プロジェクト・ページ SVNリポジトリ 最新版がtrunk以下に入っています。またtags以下には、日記の各日付に対応したソースコードが入っています。 ビルド方法やライセンスは…

帰還

というわけで明日から更新再開します。ソースコードとかをsourceforgeプロジェクトにアップするかもしれません。きっとライセンスはNYSLでD言語で普通のOSを実装していくと思います。D言語ってOS書くための言語なんだね! という誤解を広めたいです(爆)。…

旅に出ます

2日くらい外出するので、コメントや更新が停止します。

起動するまでの長い道のり IPL編(10) qemuモニタリングの巻

カーネルが一括ビルドできるようになった。これで変更を加えてもコマンド一発で最新版が作れる。 だけど、デバッグはどうするのだろうか。文字表示はできるけど、まだ数字やレジスタの値を表示させることはできない。暴走したか単に無限ループで止まっている…

起動するまでの長い道のり IPL編(9) ビルド環境makeの巻

512バイトの制限を超えてカーネルの読み込みができるところまでをやった。これからソースファイルがどんどん増えていくと、ビルドがかなりめんどくさくなる。そこで今回は、makeを使った一括ビルドの方法を解説しようと思う。

加筆・修正

サイドバーにブックマーク表示追加 本サイトのネタ元がほぼ網羅されているので是非読もう。 スタック・セグメントの指定が間違っていたのを修正 0x0100にしなければいけないところが0x1000になっていた(汗)。 再修正。スタック・セグメントは0x0000のまま…

起動するまでの長い道のり IPL編(8) カーネル読み込み実装の巻

前回でディスクからのデータ読み込み方法と、その時にぶつかる壁について解説した。今回はいよいよデータの読み込み処理を実装していく。

起動するまでの長い道のり IPL編(7) カーネル読み込みの巻

実は、今まで黙っていたが、起動時のIPLはディスク先頭の512バイト=1セクタしか読み込まれない。1セクタだけだからブートセクタなんて言うのだ。 言うのだ、なんて威張っても仕方ない。OSのカーネルがまさか512バイトに納まるわけはないので、残りの部分を…

起動するまでの長い道のり IPL編(6) 続CPU解説の巻

今回はセグメンテーションと割り込みテーブルについて。でも多分あんまり詳しくやらない。できないから(笑)。 しかしいつになったらD言語が出てくるんだろう……プロテクトモードに行くようになったら出てくるはずなので乞うご期待!

起動するまでの長い道のり IPL編(5) CPU解説の巻

前回まで実際のソースコードを元に不器用に説明したけど、いい加減CPUの説明抜きで話を進めるのが非常に辛いと分かったので、必要最低限解説しておこうと思う。

修正

タイトルの番号が間違っていたのを修正(汗)。 言い回しをちょっと修正。 セグメントセレクタ→セグメントレジスタ セグメントを示す値がセグメントセレクタ。それを入れるレジスタがセグメントレジスタ。

修正

後から文章やソースコードを訂正したりした場合はこうやって記録する(汗)。 leawをmovwに修正。 IPLの文字列表示などでleawを使っていた箇所をmovwに直した。 IPLのprint関数の引数にあるカラーコードを削除。 設定しても反映されていなかった……。

起動するまでの長い道のり IPL編(4) 続アセンブラ解説の巻

前回まででセグメントを設定するところまでは説明した。いよいよメッセージ表示の部分について説明する。

起動するまでの長い道のり IPL編(3) アセンブラ解説の巻

ひたすら打つべし! 打つべし! だったアセンブラのソースについていい加減解説する。

起動するまでの長い道のり IPL編(2) 文字表示の巻

前回でとりあえず起動するまではできた。だが、前回のコードでは、プログラムの部分が無限ループするだけで何もしない。せめて起動したというメッセージくらいは表示させて、俺はマジで本当に起動したのだということを主張させたい。そのためには、恐怖のア…

起動するまでの長い道のり IPL篇(1) ディスクイメージ作成の巻

PC/ATマシンで動くOSを作る場合、PC/ATでのOS起動規格に則ってブートセクタ等を用意しなければならない。

加筆

qemuのウィンドウからの抜け方を加筆。

本格始動

3/3からずっと放置していて何が本格始動だよ、と言われそうだが本格始動なのでよろしく。実は会社を辞めた(爆)。それで次の仕事が見つかるまでしばらくはこのOS製作プロジェクトに専念しようと思う。居るか居ないか良く分からないけれど読者のみなさんそう…

起動するまでの長い道のり 前置き篇

なんだかとても間が空いてしまった。色々忙しかったせいもあるけれど、それ以上に起動する部分で色々詰まってしまっていた。今日ようやく、FDからカーネルイメージを読み込み、D言語のクラスを使ってシリアルポートに文字を出力するところまで到達した。D言…

なぜD言語?

大事なことをまだ書いていなかった。なぜD言語を使うのか。――前置きばかりで全然製作に入っていないじゃないかとうんざりする人もいるかもしれない。でも読んでいる人なんてまだ誰もいないだろうからいいや。

情報を集める

OSを作るためには、プラットフォームとなるアーキテクチャに関する情報が必要だ。Webだけじゃなくて書籍からも積極的に情報を集めると良いような気がする。

ツールを集める

1からOSを作る場合にもとりあえずツールがいる。私は残念ながら普段Windowsユーザなので、Windowsで使えるツールを中心に集める。マシンと通信料以外にお金は掛からないので安心して欲しい。ただし時間は掛かるかもしれない。

なぜOS?

WindowsもMacOS XもそしてLinuxもある時代、どうしてまたOSなんか自作するのか。最近はOS製作が流行ってきて理解されつつあるけど、やはり「日曜大工が趣味で、ピラミッド作ってます!」と言うぐらいの滑稽さは感じられるかもしれない。 でもOSを作ることで…

ライセンス

本Blog内の2010-06-11以前の記事に収録されている文書・ソースコードは、以下のライセンスを適用します。 A. この文書は Everyone'sDocument です。この文書を手にした一人一人が、 ご自分の書いた文章を扱うのと同じように、自由に利用することが出来ます。…

案内板

サイト全体の案内。この項目は必要に応じて更新する。 D言語 このカテゴリーには、今もっともナウいバリバリ最強のBinary2.0を代表するオブジェクト指向プログラミング言語であるD言語に関する記事を納めている。 OS製作 このカテゴリーには、今もっともナウ…

D言語でOSを作る

いまD言語(GDC)でOSを作ろうとしている。ついさっき思いついたわけではなくて、2年くらい前からずっと考えている。D言語の本家ニュースグループでOSカーネルらしきソースの投稿を見かけてから、自分でも作れるかもしれないと思った。 自作カーネル(というかI…

はてなはじめ

はてなを始めた。主にプログラミング関連のことを書くつもりでいる。 mixiや個人用Wikiを既に使っているけれど、mixiは内輪向け私信・Wikiは個人メモで、どちらも何かを広く公開するのには使えない。そこで、何となくプログラマーに定評のありそうなはてなダ…