[Subject Prev][Subject Next][Thread Prev][Thread Next][Subject Index][Thread Index]

[OSASK 1527] Re: dornick3.



  こんにちは、川合です。


Koyanagi Masaaki さんは 2001/02/20 23:34:06 の「[OSASK 1523] Re:
 dornick3.」で書きました:

>動作確認しました。ウインドウ移動がマウスでできるようになったのは
>劇的進化という感じがします。そういえば y方向って
> 1dot単位で移動可能なんですね。なんとなく 8dot単位な気がしていました。

  ご報告ありがとうございます。

  これで、マウスがあればF9〜F12を使うことなく全ての操作ができる
ようになりました。

  ご指摘の通り、y方向の移動は1dot単位で可能です。今まではカーソ
ルキーでしか移動できず、x方向とy方向とで移動速度が違うのはかえっ
て不便だろうということで、y方向も8dot単位でした。

  文字表示ルーチンさえちゃんとすれば、x方向の移動も1dot単位にで
きます。

> 起動ディスク作成もできました。今まで起動ディスク作成中はただ見ているだ
>け
>だったのですが、ふと思いついて aball3.bin とか s_world.bin を起動してか
>ら
>起動ディスク作成を実行してみました。ディスクをアクセスしながら他のタスク
>が動いているのを見るとマルチタスクをより強く実感できます。

  なるほど。それはおっしゃる通りかもしれません。

>また音楽を鳴らしながら解像度切替をすると、音が飛びますがテンポは
>変化なしでした。この音が飛ぶのは仕方がないのでしょうか?

  音が飛ぶのは、画面切り換え中のタスク切り換えが抑制されているた
めです。これは、VESA BIOSがビデオチップのI/Oにアクセスしている真
っ最中にタスク切り換えをしたら、きっと切り換えに失敗するのではな
いか、という懸念のための処置です。タスク切り換えが間に入ると、CP
U時間の尺度で見れば、かなりの時間が必要になりますから、ハードウ
ェアアクセスのタイミングが大きく狂ってしまう可能性があります。

  したがって、これを克復する一番良い方法は、OSASK用の画面モード
切り換えルーチンをビデオカード別に書き、そのルーチンで画面モード
を切り替えることです。このビデオドライバーを書く時は、タイミング
が重要な部分とそうでない部分がはっきりわけて、タスク切り換えを抑
制する時間を短時間にすることができ、実質的には音の飛びが無くなり
ます(完全にはなくならないが、人間には知覚できないレベルになる)
。

  他にも方法があります。アプリ内で音を制御するのではなく、システ
ム内にメロディードライバーのようなものを作り、そこがサウンドトラ
ックを制御するようにする方法です。なぜこれで音の飛びが解決できる
のかといいますと、ドライバーは一般にタスクを切り換えることなく動
作できるためです。アプリからメロディードライバーへメロディーライ
ンを転送して、メロディードライバーがバックグラウンドで自動演奏す
るようにすれば、画面モード切り換えルーチンを直さなくても音飛びは
解決できます。

  僕としては、画面切り換えはいずれはOSASK専用のドライバーでやる
べきだと考えています。VESAを使っているのは、それまでのつなぎのつ
もりです。また、前からメロディードライバーも用意するつもりでした
。本当はmusic0をベータリリースした時に用意してしまうつもりだった
くらいです。ドライバーで時間制御をするのがもっとも正確で、さらに
負荷も少なくて済むためです。

  現状で、音が飛ぶことはあってもテンポが狂わないのは、OSASKの設
計がそういう問題に対してすでに配慮されているせいです。なお、テン
ポを犠牲にして音を飛ばさないようにすることもできます(アプリ側で
選択できます。・・・music1〜4では、work->lib_waitsignal.optが0x0
7になっていますが、これを0x0fにすれば音飛びしなくなるはずです。
ただしこの場合はテンポが犠牲になります)。


  それでは。

--
    川合 秀実(KAWAI Hidemi)
川合堂社長 / OSASK計画総指揮 / カーネル開発班
E-mail:kawai !Atmark! imasy.org
Homepage http://www.imasy.org/~kawai/