ブログパーツ Twitter

« 印象派展に行ってきた | トップページ | OSAKA PiTaPaの年会費無料になる条件が変わる »

2014.05.07

新HariTiger OS、3ヶ月

昨日のお出かけのために足が多少筋肉痛になってます。
これを「筋肉痛が翌日に出たからまだ若い」と取るべきか...
それとも「あの程度で筋肉痛になるとはなんたること」と取るべきか...
それが問題だ(そうなのか?


----------

この2月に新板の開発を開始した私の自作 OS、 HariTiger OS についての記事も今回で4回目。

新 HariTiger OS についての過去記事です。
2014.04.06 新HariTiger OS、2ヶ月
2014.03.06 新HariTiger OS、1ヶ月
2014.02.20 Project HariTiger OS、再起動
旧 HariTiger OS の記事へのリンクは2月20日の記事内にあります。

 
6日(火)でまる3ヶ月が経ったことになります。



では今回も最新の画面をどうぞ。
 
今回の最新の画面
(ん? 前回の記事と比べて文字やアイコンがやたら小さくないですか??)
※画像をクリックすると大きな画像(800x600)を表示します。
 
この画像の最大のポイントはその注釈。
 
> 画像をクリックすると大きな画像(800x600)を表示します
 
つまりついにこれまでの「320x200(画像サイズとしては2倍に拡大されて640x400)」から脱出することに成功したのです。
(実はこれにこの1ヶ月の半分超を費やしました。)



前回まではグラフィックモードとして IBM が開発した VGA という規格を使用していました。
※VGA = Video Graphics Array
 
この VGA は最大 640x480 の解像度まで使用できます。
※640x480 では16色しか使えないので、256色使える 320x200 を使用していました。
 
640x480 を超える解像度を自作 OS で使用するためには、VESA という標準化団体が規定した VBE という規格を使用するのが最も簡単です。

VESA = Video Electronics Standards Association
VBE = VESA BIOS Extensions

 
OS が通常動作する CPU の「プロテクトモード」においてテキストモードから VESA のグラフィックモードに遷移させるには、PC の BIOS が「VBE3.0」という規格に対応していることが必要です。
 
ところが色々調べた結果、私が使用している PC 仮想化ソフトである VirtualBox では、「VBE2.0」という規格にまでしか対応していないことがわかったのです。

VBE2.0 では、BIOS などが動作する「リアルモード」で VESA のグラフィックモードに遷移させることはできますが、「プロテクトモード」では使用できません。
30日でできる! OS自作入門」(※以下「30日OS」)では、この機能を使用して OS 本体の起動前に VESA のグラフィックモードに遷移させています。

 
つまり VirtualBox で VESA のグラフィックモードを使いたければ、「30日OS」のように「先に VESA のグラフィックモードにしてから OS 本体を起動する」方法しかないのです。



ここで「VESA のグラフィックモードを使いたければ、OS 本体でのテキストモードからグラフィックモードへの遷移は諦めなければならない」ことになりましたが、問題は「OS 本体の起動前に VESA のグラフィックモードにする方法」です。
 
2つの方法が考えられます。
 
1.「30日OS」と同様に独自ブートローダ内で VESA のグラフィックモードにする
2.GRUB に VESA のグラフィックモードにしてから OS を起動してもらう
 
当初は2の方法がわからなかったので、1を実現すべく最初の頃に作った自作ブートローダの改造に取り組んだのですが、なぜか OS 本体を正しく起動することができませんでした。
(同じ OS を起動しても、GRUB からなら正常に起動するのに、自作ブートローダからだと表示が乱れて異常終了してしまう。)
 
ところがふとしたきっかけで上記2のやり方がわかって、無事 VESA のグラフィックモードを使えるようになりました。
(もしその方法を知りたい方がおられましたら、コメント欄にその旨をどうぞ。何件かあれば別記事を書くかも。)

当 blog のコメント欄は承認制を採っています。
なので書き込まれたコメントは筆者の承認後に見えるようになります。

 
VESA のグラフィックモードが使えるようになったので、最大 1280x1024 まで対応できます。
 
しかし開発に使用している実 PC の解像度が 1366x768 で、VirtualBox の画面内に全体が一度に表示可能な最大サイズが 800x600 なので、便宜上そのサイズで開発してます。
(それより大きな、例えば 1024x768 とかにすると、スクロールバーが発生してしまう、)
 
また旧 HariTiger OS の画面サイズが 640x480(※) だったので、少なくともそれよりは大きくしたいと思ったからでもあります。

なぜそのサイズにしたかの理由ははっきりとは覚えていませんが、やはりあの当時の開発用 PC の制約があったのかな。

 
テキストモードは使えなくなりましたが、グラフィックモードでありながら「テキストモード風」な起動画面にしました。
 
使用できる「色」に関してはこれまでと同様に256色ですが、xterm(※) の既定のパレットに合わせたつもりです。

「xtermは、X Window Systemの標準的なターミナルエミュレータである」 Wikipedia より。

 
つまり色に関しては256色モード時の Unix 系 OS と同等になった、はず?
(なので OS 各部の色について、前回までとは異なっている箇所があります。)
 
なお、VESA に関する情報については「0から作るOS開発」のサイトを参考にさせてもらいました。
 
また xterm の既定のパレットに関しては以下のページを参考にしました。
端末の256色拡張の色(パレット)について - 試験運用中なLinux備忘録
 
1280x1024 での画面
(1280x1024 での画面です。前回の記事で「巨大」と表現したメニューの何と小さなことか。)
※画像をクリックすると大きな画像(1280x1024)を表示します。



さてここまで予想以上に長くなったので、画面の解像度以外の変更点について駆け足で。
 
・ウインドウにタスクが対応するようになりました
 
最初に挙げた 800x600 の画像で、上の2つと左下のウインドウに数字が表示されていますが、これは「30日OS」のマネをしてそれぞれのタスクで数を数えさせているのを表示するようにしたからです。
(どれも下2桁が00なのは、100に達するごとに表示を更新しているためです。)
 
見てわかるように3つのウインドウで数字が異なっていますが、これはそれぞれ独立したタスクが動いているからなのです。
(タスクとしては独立していますが、タスクのソース自体は1つです。)
 
Launcher 上のアイコンも、これまでのただの四角からそれらしいものに変更しました。
(Test の「T」をモチーフにしてます。小文字だけど。)
 
・コンソールタスクとそのウインドウを作成しました
 
右下の「Terminal」とタイトルバーに表示されたウインドウがそれです。
 
アルファベットの大文字と小文字、数字と記号が入力できます。
(シフトキーだけでなく Caps Lock の状態も見ている。)
 
Num Lock キーを ON にすれば、テンキーの数字も入力可です。
 
Back Space キーで入力済の文字を消していくことも出来ます。
 
カーソルは1秒間隔で点滅しますし、画面右下隅まで入力するとちゃんと1行スクロールアップします。
 
Launcher 上に起動用のアイコンも作成しました。
 
ただしコマンドの実行はまだできません。
 
キーボードからの入力を処理するうえでの仮想キーコードについては、開発マシンの Ubuntu 上で「$ xmodmap -pke」コマンドを実行し、その内容に準拠させました。
 
また Test Application と Terminal の両方のタスクとも、機能の実装は「30日OS」とは異なる完全な独自コーディングになっています。



さてここで「重大発表」。
 
これまで1ヶ月ごとに進捗を報告してきましたが、この形式は今回をもって止めます。
 
今後は何か進展があるごとに報告していく形になります。
(たぶんこれまでよりゆっくりした進捗になると思います。)
 
締切があると「締切までにこれこれの機能を実装しなきゃ」と思って、OS 作成以外のことの実施に影響が出まくるためです。



再起動」の記事で挙げた「実現したい機能」の中でまだ実現していないのは「システムコール」なので、それにそろそろ取り掛かろうか。
 
それとも「30日OS」では作成しなかった(※)「フロッピードライバ」を作る方向に進めようか。

「30日OS」ではブートローダの段階で BIOS の機能を使ってフロッピーの内容をメモリに転送しておき、OS 本体ではそのメモリの内容を読むという手を使っています。

 
いずれにしても、これまでよりますますのんびりと開発していきます。


結論: PC-9801起動時の「ピポッ」という音も出したいな


・2015年2月15日 追記
次の記事が出たのでリンク貼っておきますね。
2015.02.14 新HariTiger OS、フロッピーを読むのに成功

« 印象派展に行ってきた | トップページ | OSAKA PiTaPaの年会費無料になる条件が変わる »

コメント

コメントを書く

コメントは記事投稿者が公開するまで表示されません。

(ウェブ上には掲載しません)

« 印象派展に行ってきた | トップページ | OSAKA PiTaPaの年会費無料になる条件が変わる »

2017年6月
        1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30  

お気に入り

無料ブログはココログ