* 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

リロード   新規 編集 差分 添付   トップ 一覧 検索 最終更新 バックアップ   ヘルプ   最終更新のRSS