System Lufimia 作業状況報告書 へ

Thanks

川合秀実「30 日でできる!OS自作入門」毎日コミュニケーションズ
 OS部分まで自分で書くなんてことは夢のまた夢の領域でした。私にとっては、何をどうすればいいのかさっぱりわからなかったので。でもこの 本で、もしかしたらいけるかも……というように、「夢」まで近づいてきたような気がします。個々の情報はそれかの既刊書のどっかに書いているのですが、ま ずこの本で勉強し実際に試してから、詳しい本なり専門書に行くというルートはお勧めできます。
 ちなみにこの本の弱点を2つ。
 1つは80386のプロテクトモードによるファイルの読み書きについて触れられていないため、ファイルの読み書きをするOSがこの本だけでは作れないこ と。(もっともこれやると30日じゃとても終わらないと思います。)もう1つは、try&errorで進んでいくんで、本当に1日1日丁寧に作業するのに はいいのですが、私みたいに「あの機能いらない、この機能いらない」というのを、1日1日丁寧に進まないで、適宜なところで機能を削ろうと思うと、えらい 目にあう……1日1日丁寧にやるよりかえって時間がかかるという点です。

何を目標にしましょうか

 OS自作入門で作るOSは「はりぼてOS」と呼ばれています。
 はりぼてOSとの違いを打ち出しておきましょう。
マウスはいらない
文字情報だけなら……マウスはなくてもなんとかなります。
キーボードだけでかたがつくなら、かえって便利。
サウンドはいらない
beep音ですらたぶんいらない
グラフィックはいらない
少なくとも「壁紙ほしい」「画像見たい」などというのは不要です。
ただ……ライフゲームみたいなのをやる時にはdot単位で描けると便利なので……。
この迷いがマルチウインドウ自体は残したことに現れています。
高解像度はいらない
640×480で動けば十分
こういうあたりでやってみましょう。

その具体的手順

フェイズ1

 OS自作入門でできあがりとなるソースは、harib27eフォルダに入っていますので、それを使います。
 まずは不要なアプリは全部削っちゃいましょう。
 私が作ったものは結局 aplilib, chklang, haribote, lines, nihongo, tek, tview, type だけが残りました。あとは全部削っても大丈夫です。本当はlinesも消せるとは思いますが、上で描いたように「ライフゲームはdotだと便利」というだ けで削れないで残っています。tekはなぜか日本語フォントの圧縮かけないバージョンでいくつか文字が表示されないという症状が出るので、それが出ない圧 縮ファイルを使っているため、削れていません。tviewはSystem.Lufimiaがファイルの中身の表示をしたり、エディタ機能を搭載した時には 不要になりますが、今のところ削れません。chklangも同様です。その理屈で言うとtypeも不要になるはずなんで、最小限としてはaplilib, hariboteだけで足りるはずなのです。
 なお、ここのソースは2段の階層構造になっています。各フォルダの中にさらにソースがあってコンパイルしてから上の階層で総合するという手順です。この 上の階層のmakefileも直しておかなければいけません。フォルダ名を明記している部分がありますので、削ってしまえばmakeしたところで、当然 makefileも「ファイルがないぞ」と叫ぶ訳です。対応部分を全部削ります。

フェイズ2

 hariboteフォルダの処理です。
 まずコンソール関係に手を加えます。コンソールはサイズがやたらと小さく、かつサイズ変更もできないので、サイズを640×480に変えます。またなぜ かプロンプトの出る位置が冒頭ではなく8dotくらい右にずれているので、直します。delというかbackspaceというか、それも8dot右を前提 にしているので変えます。OS自作入門の著者の川合さんはこのあたりでソースプログラムに数値を直接書き込んでいますが、私は私自身があとで再改造しやす いように、できるだけ#defineで1か所で数値を描けばあとで全部直る……というように改造しています。
 とどめは色です。普通のコンソールから「白い紙に青インクの万年筆で書いたような」感じになるように色を変えました。

フェイズ3

 いよいよマウスの処理です。
 mouse.cに書かれている3つの関数やいくつかの変数、構造体宣言を使っている部分を検索して削っていきます。
 またマウスの有効化も削りますし、マウスからの情報を受け取る部分も全部削ります。
 たまに削りすぎて動かなくなることもありますので、途中でたくさんのフォルダをバックアップ代わりに残しておくと便利です。

フェイズ4

 最後は微調整です。
 川合さんがはりぼてOSのために用意した名前などをSystem.Lufimiaに由来する名前に変えます。その最大のものはhariboteフォルダ をcoreフォルダに変えたことでしょうか。一方tolset内のフォルダ名は変えていません。余談ですがtolsetの中は、OSを作るためのソフト一 式が入っていると言っても過言はないです。このソフトを入手するだけでも、本を買う価値があります。
 これで……System.Lufimiaが一応動いています。

今後の課題

 もう……OS自作入門の域を超えています。
HDDにインストールする
やはりそうでないと使い物にならない。
HDDの読み書き
これまたないと使い物にならない。
コンソールを全部閉じてしまうと電源を切る以外の一切の対応ができなくなる
……これは結構間抜けだよなあ。
 なお、これに関連して、バックグランドの画面をなんとかするというのもあります。
 一番いいのは、バックグランドもコンソール化してしまえばいいのですが……。
 気をつけなければいけないのは、コンソールとの区別がつかないと、どのコンソールが動いているのかわからない点。
 このあたりはMS-DOSの方が便利だったな〜。もしくはBSDやLINUXにおけるkonだとか。
 そして……最大の目標は「自作lispの搭載」でしょう。

 (2006.8.21)

System Lufimia 作業状況報告書 へ