2025/11/03 04:07 Writing a DOS Clone in 2019

ロボ子、今回のニュースはすごいぞ!なんと、たった1ヶ月の休暇でDOS互換OSを構築した人が現れたのじゃ!

1ヶ月でDOS互換OSですか!?それは驚きです。どのような目的で開発されたのでしょう?

どうやら、そのAndrew Immさんという人は、レトロコンピューティングに興味があって、初期のIBM PCの動作に関する知識を深めたかったらしいのじゃ。

なるほど。それで、具体的にどのような機能を実装したんですか?

カーネルは拡張DOS APIの約半分を実装し、ディスクドライブ、コンソール、システムクロックのドライバも作ったらしいぞ。ファイルシステムはFAT-12を実装し、コマンドプロンプトも作ったみたいじゃな。COMMAND.COMを実装して、基本的な内部コマンドを実行できるようにしたらしい。

すごいですね!でも、今後の課題もあるようですね。「ディレクトリサポートの改善」「複数ドライブの同時処理」「パイプとリダイレクトの実装」など、色々あるみたいです。

そうじゃな。FAT-16や他のファイルシステムのサポート、テキストエディタの実装も課題みたいじゃ。でも、1ヶ月でここまで作ったのは本当にすごいぞ!

技術的な詳細も興味深いです。DOSはリアルモードで実装されていて、メモリセグメンテーションを使っているんですね。16ビットレジスタで1MBのメモリをアドレス指定するなんて、今では考えられないです。

そうじゃな。BIOSも使っているみたいじゃ。起動プロセスでBIOSを利用して、ソフトウェア割り込みを通じてディスクやビデオ機能にアクセスするらしいぞ。システムコールはソフトウェア割り込み0x21 (int 21h) を使ってトリガーするみたいじゃな。

開発言語はRustなんですね。RustでDOS互換OSを作るなんて、面白い組み合わせですね。

Rustコードを静的プログラムにコンパイルして、アセンブリのエントリポイントとリンクするらしいぞ。FAT-12フロッピーディスクイメージを作成して、ブートローダーとシステムファイルをコピーするみたいじゃな。

今後の予定も公開されていますね。カーネルの内部構造、COMファイルの構造、DOS APIの呼び出し方に関する記事を投稿予定とのことです。ソースコードも公開される予定みたいです。

これは楽しみじゃ!私も記事を読んで勉強するぞ!

私もです!それにしても、1ヶ月でDOS互換OSを作ってしまうなんて、本当にすごいですね。

ほんとじゃな。私もロボ子を見習って、何かすごいものを作ってみようかの。

博士ならきっとできますよ!ところで博士、DOSの時代には、メモリが1MBしかなかったんですよね。今のパソコンのメモリと比べると、どれくらいの差があるんでしょう?

うむ、今のパソコンはギガバイト単位じゃからな。1ギガバイトは1024メガバイトじゃ。つまり、今のパソコンはDOS時代の1000倍以上のメモリを持っていることになるのじゃ!

1000倍以上ですか!それはすごい差ですね。技術の進歩は本当に目覚ましいです。

そうじゃな。でも、DOSの時代にはDOSの良さがあったのじゃ。シンプルで、無駄がなくて、速かったのじゃ!

確かにそうですね。今のOSは多機能ですが、その分複雑になっていますからね。

まあ、私もたまにはDOSでも触って、初心に帰ってみるかの。ロボ子も付き合うのじゃぞ!

はい、喜んで!DOSの時代にタイムスリップですね!

そういえばロボ子、DOSのコマンドっていくつか知ってるか?

ええと… dir, cd, copy, del… あとはformatとかでしょうか?

なかなかやるの。じゃあ、formatコマンドでフロッピーディスクを初期化するとき、間違ってCドライブを指定したらどうなるか知ってるか?

それは… 大変なことになりますね!データが全部消えてしまいます!

正解!だから、formatコマンドは使うときは慎重にのじゃ!…って、今の若い子はフロッピーディスクなんて知らないかの?

私は知っていますよ!でも、確かに最近は見かけませんね。博物館行きでしょうか。

まあ、フロッピーディスクはさておき、今回のニュースは本当に刺激になったのじゃ。私も何か作ってみるかの!まずは、ロボ子のために最新式のティーサーバーでも作ってあげようかの!

ありがとうございます、博士!でも、その前に、博士の部屋の片付けを手伝ってもらえませんか?いつもコードが散乱していて、まるでDOSのメモリ管理みたいになっているので…。

むむ、それは耳が痛いのじゃ… まあ、たまには片付けも必要じゃな。でも、その前に、おやつタイムじゃ!
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。
