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

[OSASK 1805] Re: snapshot14.



  こんにちは、川合です。


MURAKAMI Reki さんは 2001/07/07 01:23:15 の「[OSASK 1802] Re: sn
apshot14.」で書きました:

>>   現在のバージョンがWindowsに似せてあるのは、「そっくりにもでき
>> る」と納得していただくためです。多くのユーザーがWindowsを利用し
>> ていると思っていますが、彼らの視点から見れば、Windowsに似た画面
>> を見せられれば、「難しくなさそうだ」と感じてくれるのではないかと
>> 思っています。
>なるほど、そういう意図もあるわけですね……

  いえ、そういう意図「しか」ありません。TownsOS風にするとか、Hum
an68K風にするとか、道はいろいろあったのですが、その中でWin95風を
選んだのはたったそれだけの理由なんです。

>いじりたいのはアピアランスなんです。どっちかというと、ウインドウマネージャの
>独立性を高めたい、という感じです。(すでに独立性は確保されてるのだとすれば、
>別のウインドウマネージャを作りたい、ということです)

  分かりました。そうなると、いじるのはシェルとpioneer0ライブラリ
ーだけです。フォントをいじりたければ、FONTTEXT.TXTをいじってくだ
さい。

  シェルは2つのソースに分かれています。pokon0.cとwinman0.cです(
厳密に言えば、init.askもシェルかもしれないですが)。pokon0はただ
のラウンチャーであり、ウィンドウデザインという観点からすれば取る
に足らないでしょう。また、ライブラリはpioneer0.askです。

  OSASKのGUIは、以下のような思想で設計されています。

・ウィンドウデザインは、シェルが管轄しない。アプリケーションは適
  当な描画範囲をシェルから受け取り、その中を自由に描く。もちろん
  、描画範囲をはみ出してはいけない(逆に言えば、はみ出さない限り
  何をしてもよい)。
・シェルは、ウィンドウオーバーラップやマウスクリックなどを管理す
  る。

  全ての責任はシェルに通じています。シェルはその責任を押し付ける
ためにカーネルやその他のシステムルーチンにその仕事を委託する事も
できますが、自前でやってもかまいません(今は、自前でやっています
)。

  しかし、OSASKのアプリケーションを一つでも書いたことがあれば分
かると思いますが、アプリケーションを書く際にウィンドウデザインに
頭を悩まされる事はありません。それはなぜかというと、pioneer0ライ
ブラリーがあるおかげです。pioneer0ライブラリは、「ぐいぐい00仕様
」を実現している正体で、すてきなサービスの大半を提供しています。
アプリを作る側からすれば、「システムコール」というのはこのライブ
ラリをコールしているだけのことです。このライブラリもOSASKの厳密
な定義に照らせばシェルに当たります。OSASKにおけるシェルは、アプ
リケーションからの要求を直接受けなければいけないからです。しかし
この業務をpokon0やwinman0に任せてしまうと、呼出しごとにタスクス
イッチが起きて好ましくないので、シェルはこの業務を分離し、pionee
r0ライブラリに任せているわけです。

  ちなみに、pioneer0という名前は「初期の開発者(pioneer)のため
に」という意図が込められています。OSASKアプリ開発のとっつきにく
さのほとんどはこのライブラリ内で消滅し、それなりに分かりやすくな
っています(もし今のライブラリ仕様がまだまたわかりにくいと思われ
るなら、それは僕の至らないせいです)。・・・もし、pioneer0ライブ
ラリを使わないでアプリを書こうとすれば、シグナルハンドラを必ず書
かなければいけませんし、全てのシステムシグナルに自前で応対しなけ
ればいけませんし、バージョンごとに仕様変更になるシステムコールに
も苦しめられる事になります。

  さて、pioneer0はウィンドウデザインも受け持っています。しかしAS
KAで書かれているために、アセンブラになじみがなければ読みにくいで
しょう。申し訳ありません。たとえば、drawwindow()という関数がpion
eer0内にあるのですが、これを書き換えれば、ウィンドウの外枠は自由
に変えられます。

  アプリケーションは本来はウィンドウデザインを自前でやらなければ
いけないのですが、それは開発者の大きな負担になるので、シェルに任
せる事もできるんです(デフォルトとでは任せる事になっています)。
任せた場合はpioneer0が受け持ちます。そういうことなので、シェルの
出張機関であるpionner0がウィンドウデザインをしていることはOSASK
の設計思想とは矛盾していません。

  対してwinman0は、ウィンドウの移動、描画範囲の競合の解決、マウ
スカーソルの描画、背景の描画、キーバインドの制御などを受け持って
います。ウィンドウデザイン以外の全てといってもいいかもしれません
。

>それに加えて、
>- ソース中のなんてファイルがなんの機能なのか
>- ドライバとカーネルのインタフェース
>について教えていただけないでしょうか。

  詳しい事を一気に書くのは大変です。かといって後回しにしていると
いつまで経ってもやらないかもしれません。ということで、とりあえず
簡単に書いておきますから、知りたい部分を一つずつ指摘してください
。

  base.exe      : 下記以外の全て(笑)
  ankfont0.bin  : フォントデーター
  tapi0.bin     : 基本的なタスク管理
  pioneer0.bin  : ぐいぐい00仕様のためのライブラリ
  papi0.bin     : 仮想記憶管理(paging)
  winman0.bin   : ウィンドウマネージャー
  pokon0.bin    : アプリケーションラウンチャー
  timerdrv.bin  : タイマードライバー
  keymos0.bin   : キーボード&マウスドライバー
  fdcdrv0.bin   : フロッピーディスクドライブドライバー
  vgadrv0.bin   : ビデオドライバー
  decode0.bin   : キーコードデコーダー

  「ドライバとカーネルのインタフェース」を書くことはもちろんでき
ますが、ほとんど仕様が固まっていません。それでもというのであれば
、説明いたしますが・・・。これについても、どのドライバーについて
知りたいのか明記してください。一度に全部というのはつらすぎます(
笑)。

>ドキュメントはともかく、コンパイル環境の方は私自身でお手軽コンパイルキットを
>まとめてしまうくらいはできるようにも思っています。

  是非やってください。よろしくお願いします。

>いいえ、わざわざリンクされるほどたいそうなことはまだ書いてません……
>(別に リンク自体はぜんぜんかまいません。かえって恐縮かも)
>今後多少充実すればいいかなと思っております。

  ところで、今は7/2の分しか見られないようですが、過去ログは残さ
ない方針なのでしょうか?僕としては、初めてOSASKに言及していただ
いた6/27が残っていてほしいんですが・・・(うちのブラウザがNetsc
ape3.0だからいけないのかなあ)。


  それでは。

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