* KHBIOS関係のメモ
-(by [[K]], 2007.05.05)
-このページは[[memo0022]]の続きです(memo0022はKHBIOS/0000相当)。
*** (1) えせブートのために(5月中旬リリース向け)
-ブートスクリプトのありかを示すためのマーク:
--00 F2 KHB0 この後にポインタ。ポインタはLBAだが、単純なLBAではない。
--まずehヘッダでシフト量を書く。さらにehヘッダで有効数字を書く。有効数字部分については、4桁単位で。ビッグエンディアン。
--とりあえず16バイト単位かな。16バイトは128bit。だからシフト量7。111011。
--それで6バイトくらい書きたいよね。つまり12を指定。1111110000。
---シグネチャ6バイト。6bit+10bit。6バイト。これだな。2^(48+4)=4ぺタバイトまで指定できる。
-これをとりあえずIPL内に16バイトアライン位置から書いておくこと。
----
-ブートスクリプト
--最初に 00 FD KHB0 この後にサイズ。これでスクリプトの全サイズを表す。
--次に対応機種番号の範囲、スクリプトの開始位置、の列がある。
---まず最初に列の個数かなあ。
---そして[a,b)だとしたら、(b-a),a,メモリ最低, メモリ最大(差), ofs エンコード長ヘッダは5つまとめて指定。・・・じゃなくて混在。
---IA-32のAT互換機は1。TOWNSが2。NEC98が3。他はとりあえず未定。
--(例)・・・というか、ATだけの場合を作ればいいな。
-スクリプト本体
--ブートディスクのどこからどこまでをどこに読むか(そして圧縮かどうか)。どこからエントリするか。ESPはとりあえず後ろでいいよね。IDTやGDTも適当に提供される。最初は全てのセグメントがエイリアスなどを使って共通域を指す。ってことはコマンドは2種類だけでいいのかな。最初はCLI。
--KHBIOS呼び出しはfar-call(とりあえずコールゲート)とINT(0x4f);(トラップ)。
--GDTとIDTのアドレスは、SGDTやSIDTで知ることが出来るな。だから取得ファンクションは後回しでいいや。
--ファンクション:ロードと画面モード切替とキー入力。
----
-ブートスクリプト部分についてはまた今度考えよう。少し考えた。↑
--リアルメモリやプロテクトメモリ指定については、起動時には指定できない。起動後に細かく指定してもらうべし。希望どおりにもらえなければブートに失敗したという終了方法もある(この場合次のOSのブートを試みる)。
--起動するとKHBIOSとやり取りするためのハンドルがもらえる。
--起動後にそのOSのために予約しておいたほかのメモリブロックが与えられる。最初はブートブロックしかもらえない。ver.0.0では他のメモリブロックはない・・・いやある。リアルモードメモリとか。
----
-以下は将来の拡張との兼ね合い
--ガーベージコレクトについてはできなくてもいいと思っていたが、やっぱりできたほうがいい。しかし負担にならない程度の方法でやる。KHBIOSからではなく、各OSから自発的に冷凍保存状態になる(その間、割り込みなどは受け付けられない)。その保存状態をディスクに保存してもいいし、メモリ間移動してもよい。冬眠時間をできるだけ短くするための工夫もあっていいだろう。メモリブロックを分割するとか小さくするなどについても、基本的に各OSが自発的にやることであって、KHBIOSからせまるものではない(まあ割り込みシグナルでユーザの意思を伝えるくらいならやってもいいけど)。
----
-とりあえず画面モードを切り替えられて、ある程度の描画ができるようになりたい。
*** (1) 2007.05.17
-うーん現状ではさすがにリリースできない。でもとりあえずの仕様は(頭の中で)固まってきた。ということでtodoリスト。
--IPLを読んでシグネチャを探す(易)--5/29できた
--ブートスクリプトを読み込む(易)--5/31たぶんできた
--ブートスクリプトを実行する(易)--6/4たぶんできた
--OSが起動する(GDTやIDTの初期設定)(易)--6/4超えせ版ならできた --6/5超ではないえせ版ができた
--KHBIOSをOSから呼び出せるようにする(易)--6/5たぶんできた
--ディスク読み込みサポート(易)
--画面モードの切り替え(難)
---解像度や色深度の範囲で指定、エミュレーションでもよいか、実際に切り替えるのか・情報取得か、n番目
---1/2/3/4bytes
--画面リフレッシュ(易)
--カラーコード取得(易)
--キーボードサポート(難) --- これ仕様決めるの大変だから後回しにしようか
*** (2) 2007.06.05
-とにかく完成度を下げてでも早く最初のリリースしたいので、目標などをまとめる。
--ブートデバイスはとりあえずBIOS-FDDのみでもいい。
--ファンクションも機種依存の元BIOS呼び出しだけでいい。
--タイマ割り込みを自分で処理した場合に、元BIOS呼び出しがほぼ不可能になってもかまわない。
-リリース後のtodoリスト。
--起動高速化
--サンプルOSの準備
--CFやHDDから起動できるようにする(HDDにはATAも当然含まれるが、主たる狙いはUSBのストレージデバイス)。
--タイマ割り込みドライバ
--ストレージアクセス標準ファンクションの組み込み
--キーボード割り込み
--マウス割り込み
--画面モード切り替えファンクション
--TOWNS版/98版開発
--OSASKのKHBIOS対応
--並行起動サポート
* こめんと欄
-もう中旬だよ・・・メインマシンのトラブル対策とかの雑用ばかりしていたら、時間ばかりが過ぎていく・・・。 -- [[K]] SIZE(10){2007-05-15 (火) 21:47:29}
-来週にならないと時間が取れない・・・ううう・・・。 -- ''K'' SIZE(10){2007-05-17 (木) 08:22:10}
-むう、なぜかDiskBIOSの呼び出しで失敗する・・・。がんばらないと。 -- ''K'' SIZE(10){2007-05-28 (月) 23:24:17}
-DiskBIOS呼び出しバグ直ったー。 -- ''K'' SIZE(10){2007-05-29 (火) 08:24:56}
-明日は5月最後の日だというのに、体調が思わしくなくて(=猛烈に眠い)思うように進まない・・・。くやしいなあ。 -- ''K'' SIZE(10){2007-05-30 (水) 19:25:12}
-ううだめだー。あと数分ではできない。眠いので寝よう。続きは明日。もう欲張らないで上記(1)のOS起動までエセエセでできたらとりあえずリリースの予定。 -- ''K'' SIZE(10){2007-05-31 (木) 23:56:49}
-仕様を改善できることに気がついて、猛然と改善中。仕様というか、スクリプトのエンコード方法みたいなもので、はっきりいって本質ではない。でも将来の拡張性やシンプル性を失いたくは無いので、ここが腕の見せ所だと思って、がんばり中。 -- ''K'' SIZE(10){2007-06-02 (土) 21:40:37}
-結構進んだけど、完成には至らず。サンプルOSの作成に苦戦中。明日からはまた忙しいので、開発ペース落ちそう・・・。 -- ''K'' SIZE(10){2007-06-04 (月) 01:33:51}
-やっとOSが起動するようになったー。まだ起動以外何もできないけど(今日は無理やり現実逃避でKHBIOS作ったけど、さすがにそれも続けられなくなってきた)。 -- ''K'' SIZE(10){2007-06-04 (月) 19:41:03}
-現実逃避しまくって、KHBIOSができたー。サンプルOSはまだできてないけど、そんなの待ってたらまた時間がかかるので、とりあえず今週末にリリースします。・・・さてまずは現実逃避分をとりもどすために用事に集中しないと。 -- ''K'' SIZE(10){2007-06-05 (火) 23:54:14}
-仕様をわずかに改良して実機テストを開始したら、ThinkPadで起動しない!(他は成功っぽい)。原因追求中。 -- ''K'' SIZE(10){2007-06-10 (日) 16:38:44}
-多少は改善したものの、本日中の対応を断念(次バージョン以降で検討)。ということで、 ThinkPad T42 での USD-FDD ブートは失敗。 -- ''K'' SIZE(10){2007-06-10 (日) 17:46:52}
-ThinkPad T42 問題はほぼ解消。でもBIOSはUSBメモリを認識しないっぽい。PCカードスロットでしのぐしかあるまい・・・。 -- ''K'' SIZE(10){2007-06-11 (月) 23:08:41}
-現在静養中。 -- ''K'' SIZE(10){2007-06-13 (水) 22:38:50}
-バグが取れて調子に乗って開発していると、いつもOSASK-MLでのKHBIOSについての説明メールを書き忘れる・・・。 -- ''K'' SIZE(10){2007-06-14 (木) 22:52:55}
-またベータリリースしてもいいくらいには進んだー。 -- ''K'' SIZE(10){2007-06-19 (火) 22:01:55}
-今月はほとんど開発できそうにないかも・・・。 -- ''K'' SIZE(10){2007-07-06 (金) 17:57:43}
-やっとバグが取れた!MOVSDでESIとEDIを逆にしていた・・・。しょぼいミスだった・・・。明日リリースの予定。 -- ''K'' SIZE(10){2007-10-09 (火) 23:49:11}
-世間にはリアルタイムOSというジャンルがあるけど、KHBIOSはそういうOSからも問題なく利用できるような、いわば「リアルタイムBIOS」を目指そうと思う。 -- ''K'' SIZE(10){2007-10-14 (日) 17:56:46}
-ThinkPad T42 のBIOSに振り回され続けている。もういやだ。こんなBIOSを使わないでも済む方向で努力しよう。・・・っていうか6/11の僕のコメントによると、そもそもBIOSからUSBメモリ見えないらしいじゃん。じゃあBIOS使わなくてもこの機種に限っては失うものは何も無いわけだ。なんだよー、そういうことは早く言ってくれよー。 -- ''K'' SIZE(10){2007-10-16 (火) 02:03:37}
-新潟OSCまでにKHBIOSの次バージョンを作ろうと思ったけど、忙しすぎでダメだった・・・。11月からまたがんばるか。 -- ''K'' SIZE(10){2007-10-24 (水) 21:36:08}
-やっとうそっぽいシェル?でvsetだのbootだのと入力しなくても自動でOSが起動できるようになった(事前に設定しておく必要はある)。ちなみにThinkPad T42の問題はたぶん完璧にクリア。 -- ''K'' SIZE(10){2007-11-20 (火) 23:25:10}
#comment