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 2007-05-15 (火) 21:47:29
  • 来週にならないと時間が取れない・・・ううう・・・。 -- K 2007-05-17 (木) 08:22:10
  • むう、なぜかDiskBIOSの呼び出しで失敗する・・・。がんばらないと。 -- K 2007-05-28 (月) 23:24:17
  • DiskBIOS呼び出しバグ直ったー。 -- K 2007-05-29 (火) 08:24:56
  • 明日は5月最後の日だというのに、体調が思わしくなくて(=猛烈に眠い)思うように進まない・・・。くやしいなあ。 -- K 2007-05-30 (水) 19:25:12
  • ううだめだー。あと数分ではできない。眠いので寝よう。続きは明日。もう欲張らないで上記(1)のOS起動までエセエセでできたらとりあえずリリースの予定。 -- K 2007-05-31 (木) 23:56:49
  • 仕様を改善できることに気がついて、猛然と改善中。仕様というか、スクリプトのエンコード方法みたいなもので、はっきりいって本質ではない。でも将来の拡張性やシンプル性を失いたくは無いので、ここが腕の見せ所だと思って、がんばり中。 -- K 2007-06-02 (土) 21:40:37
  • 結構進んだけど、完成には至らず。サンプルOSの作成に苦戦中。明日からはまた忙しいので、開発ペース落ちそう・・・。 -- K 2007-06-04 (月) 01:33:51
  • やっとOSが起動するようになったー。まだ起動以外何もできないけど(今日は無理やり現実逃避でKHBIOS作ったけど、さすがにそれも続けられなくなってきた)。 -- K 2007-06-04 (月) 19:41:03
  • 現実逃避しまくって、KHBIOSができたー。サンプルOSはまだできてないけど、そんなの待ってたらまた時間がかかるので、とりあえず今週末にリリースします。・・・さてまずは現実逃避分をとりもどすために用事に集中しないと。 -- K 2007-06-05 (火) 23:54:14
  • 仕様をわずかに改良して実機テストを開始したら、ThinkPadで起動しない!(他は成功っぽい)。原因追求中。 -- K 2007-06-10 (日) 16:38:44
  • 多少は改善したものの、本日中の対応を断念(次バージョン以降で検討)。ということで、 ThinkPad T42 での USD-FDD ブートは失敗。 -- K 2007-06-10 (日) 17:46:52
  • ThinkPad T42 問題はほぼ解消。でもBIOSはUSBメモリを認識しないっぽい。PCカードスロットでしのぐしかあるまい・・・。 -- K 2007-06-11 (月) 23:08:41
  • 現在静養中。 -- K 2007-06-13 (水) 22:38:50
  • バグが取れて調子に乗って開発していると、いつもOSASK-MLでのKHBIOSについての説明メールを書き忘れる・・・。 -- K 2007-06-14 (木) 22:52:55
  • またベータリリースしてもいいくらいには進んだー。 -- K 2007-06-19 (火) 22:01:55
  • 今月はほとんど開発できそうにないかも・・・。 -- K 2007-07-06 (金) 17:57:43
  • やっとバグが取れた!MOVSDでESIとEDIを逆にしていた・・・。しょぼいミスだった・・・。明日リリースの予定。 -- K 2007-10-09 (火) 23:49:11
  • 世間にはリアルタイムOSというジャンルがあるけど、KHBIOSはそういうOSからも問題なく利用できるような、いわば「リアルタイムBIOS」を目指そうと思う。 -- K 2007-10-14 (日) 17:56:46
  • ThinkPad T42 のBIOSに振り回され続けている。もういやだ。こんなBIOSを使わないでも済む方向で努力しよう。・・・っていうか6/11の僕のコメントによると、そもそもBIOSからUSBメモリ見えないらしいじゃん。じゃあBIOS使わなくてもこの機種に限っては失うものは何も無いわけだ。なんだよー、そういうことは早く言ってくれよー。 -- K 2007-10-16 (火) 02:03:37
  • 新潟OSCまでにKHBIOSの次バージョンを作ろうと思ったけど、忙しすぎでダメだった・・・。11月からまたがんばるか。 -- K 2007-10-24 (水) 21:36:08
  • やっとうそっぽいシェル?でvsetだのbootだのと入力しなくても自動でOSが起動できるようになった(事前に設定しておく必要はある)。ちなみにThinkPad T42の問題はたぶん完璧にクリア。 -- K 2007-11-20 (火) 23:25:10

コメントお名前NameLink

リロード   新規 編集 差分 添付   トップ 一覧 検索 最終更新 バックアップ   ヘルプ   最終更新のRSS
Last-modified: 2007-11-20 (火) 23:25:10 (5332d)