X680x0 Ko-Window ウィンドウサーバー 改良版 その14 WSRV.X Version 2.24+14 1995 11/14 小笠原博之 ウィンドウシステム Ko-Window のサーバー v2.24+14 です。このドキュメントは サーバーの使い方や +14 での追加機能を説明します。 ●動作環境 すべての X68000, X68030 で使用できます(無拡張状態可)。ただしまともに使うの であればメイン RAM 2Mbyte 以上、開発もするのであれば 4M byte 以上 +ハードディ スクが望ましいでしょう。 Human68k は必ず v2.01 以降を使用して下さい。 ●起動できるアプリケーション 基本的に WSRV.X v2.23 以降に対して上位互換を保っています。v2.23 以降作られ たアプリケーションであればそのまま動かすことができます。 ●サーバー関連ファイル wsrv.x Ko-Windowサーバー本体 wsrv.rc アプリケーション設定ファイル wsrv.rs リソースファイル ●起動オプション一覧 wsrv.x [] [ .. ] -v サーバーのバージョンを表示する -b0 BGモードにしない -f IOCS の TGUSEMD を無視して強制起動する -g ウィンドウ使用中 TGUSEMD で画面をロックする -c グラフィック画面を消去してから起動する -s 起動時のスクリーンモード指定 (後述) -d デバッグモード起動 (通常は使いません) -e サーバーが環境領域のコピーを作成します(シェルモード) -i サーバーの読み込むファイルを指定(wsrv.rc/rs) --h サーバーのヒープ領域のサイズを指定する(指定がKbyteサ イズなのに注意) 起動時にコマンドから与えたアプリケーションは、起動後に実行されます。(wsrv.rc 内の ExecCommand の方が優先されます) <例> wsrv -s7 ●起動オプションへの補足 config.sys の process 行が存在する場合、BGモードで起動します。BGモードの場 合はイベント待ちループで毎回 CHANGE_PR を実行し、バックグランドプロセスを走 らせながら使う場合に Ko-Window プロセスが無駄に CPU を消費するのを防ぎます。 (ただしBGプロセスを動かしていない場合はこの処理は無駄になる) もし process 行 があっても BGモードにしたくない場合は -b0 スイッチをつけて起動して下さい。 (BGモードでない時は絶対に BG_Term や Command.win 上の & 実行は行わないで下さ い) Ko-Window では、テキスト画面とグラフィック画面の両方を使用します。もし、テ キスト画面のマウスプレーンやグラフィック画面が、RAMDISK 等で他のアプリケーショ ンで使われていた場合は、wsrv.x を起動することはできません。何かの都合で使用中 になっていた場合、それを無視して強制起動するには「-f」スイッチをつけて実行し て下さい。(当然 V-RAM の中身は失われる) 例 wsrv -f ●起動に最低限必要なドライバ 起動時には必ず以下のドライバを組み込んでおかなければなりません。 ・起動に最低限必要なもの float?.x 浮動少数演算ドライバ (Human68k システム付属) hfont.r 高速フォントドライバ (v1.22以降 Ko-Windowシステム付属) hmouse.x 拡張マウスドライバ (0.25以降 Ko-Windowシステム付属) 以下は無くても起動できますが、もし手に入るならぜひ入れておいて下さい。 ・ぜひ入れておいた方がいいもの dcache2.r DISKキャッシュドライバです。ほとんど必須にしたいくらい重要で す。もちろん同等品でも構いません。 TwentyOne.x Human拡張ドライバです。例えファイル名判定の拡張をしない場合で も入れておいた方が良いでしょう。(+TSPD等) ただし付属の LockCompatible.x は絶対に組み込まないで下さい。 hontime.r IOCS ONTIME を高速化します。Koでは1秒間に1000回以上も呼び出し をするので、これを組み込んでおくとイベントループが若干速くな ります。 ● wsrv.rc, wsrv.rs の置き場所 起動時にサーバーはこの2つのファイルを読み込みます。このファイルは wsrv.x と 同じディレクトリに入れておいて下さい。 それ以外の場所に置くこともできます。以下は wsrv.rc, wsrv.rs の検索順番です。 (1) -iオプションで与えたファイル(ファイル名の最後を'c'/'s'にして探す) (2) カレントディレクトリの wsrv.rc / wsrv.rs (3) 環境変数 home で設定したディレクトリの wsrv.rc / wsrv.rs (4) 環境変数 HOME で設定したディレクトリの wsrv.rc / wsrv.rs (5) 環境変数 HOME で設定したディレクトリの .wsrvrc / .wsrvrs (6) wsrv.x を置いてあるディレクトリの wsrv.rc / wsrv.rs ●簡単に起動方法 wsrv.x を実行すると Ko-Window は起動します。 起動時に wsrv.rs と wsrv.rc が読み込まれ、続いて wsrv.rc のファイルの先頭 に書かれている ExecCommand の部分のアプリケーションを順次起動します。 この部分に書かれているアプリケーションが見つからないと、起動できずにそのま ま終了してしまうことがあります。自分の環境に合せて wsrv.rc を書き換えて下さい。 <> ExecCommand microwm.win ExecCommand command.win -x10 -y10 -f12 -tConsole ExecCommand kf.win ●取り敢えず終了方法 終了は次のどの方法でも構いません。 ・背景部分でマウスの右ボタンを押してポップアップメニューの「Quit」を選ぶ。 (microwm.win または SPopUp.win を使用している場合) ・Command.win 内部で logout コマンドを実行する。 もし上記アプリケーションがどれも起動されていなくて終了できなくなってしまっ た場合には、[CTRL],[XF2],[XF5],[BS] の4つのキーを同時に押して下さい。これは 強制脱出です。 ●バックグラウンド対応 KeI さんの作られた BGDRV と併用して、ウィンドウ上でコマンドをバックグラウ ンドで走らせることができます。ウィンドウという利点を生かし、いちいちリダイレ クトすることなく画面上で出力が同時に確認できます。メモリさえあれば、コンパイ ルやしながらファイル編集したり、TeX コンパイルしながら通信するなんてことも可 能です。 なお、この場合プロセスは全部バックグラウンドになり、Ko-Window 自身はスレッ ド0での動作になります。表示出力はスレッド毎に勝手にウィンドウとリンクするよ うになっています。BG-Term (bgterm.win) を使用した場合はスレッド毎の標準入力 も切り替えることができます。 バックグラウンド機能を有効に使うには、RAM 6M byte 以上が必要でしょう。もち ろん RAM 2M〜4M 状態でもバックグランドプロセス自体は使えますが、通常のコマン ドを動かすのであれば動かせないプログラムの方が多く、制約を受けてしまいます。 もしこの機能を用いない場合は以下の説明は読み飛ばして下さって結構です。 ・動作環境 確認している動作環境は以下の通りです。bgdrv v2.00 一セットが必要で、 確認はこのバージョンで行ないました。 (1) X68000 PRO 無改造 RAM 6M Human68k v2.02 bgdrv v2.00 WSRV.X v2.24+9 (以降) Command.win v1.13+7 (以降) (2) X68000 XVI+Xellent30 無改造 RAM 6M Human68k v3.02 bgdrv v2.00 + patch (BGDRV改 等) WSRV.X v2.24+13 (以降) Command.win v1.13+13 (以降) Human68k v2.02 以外や X68030 で使用する場合は、bgdrv へのパッチが必 要です。動作確認したものは以下の通り ・BGD_PAT.LZH (作:しゃんしぁ) bgdrv用パッチ集 v2.02, v2.03, v3.01, v3.02用, 000/030版 ・BGDRV改.LZH (作:E.Watanabe) bgdrv用パッチ v3.0x用 Xellent30(s)にも対応,CPUの種類も自動追従 また最初に付属の kofork.x をパスを通したディレクトリに入れておく必要 があります。kofork.x は通常の fork.x としても用いることができます。 ・コマンドの走らせ方 --- BG-term によるバックグラウンド実行 bgdrv と windrv.sys を組み込んだ状態( bgdrv / bgterm のドキュメント参 照のこと) で Ko-Window を起動します。Command.win 上から bgterm 実行コマンド とするとそのコマンドを別のスレッドで実行します。(表示は BG-term 内に 出力) キー入力待ちするコマンドが実行できるので、 bgterm command.x とでも実行すると、そのスレッドでシェルが動いてしまいます。完全に別ス レッドとして独立して動作するので、マルチタスクマルチウィンドウシステ ムのような感覚で使うことができます。(詳しくは BG-term のドキュメント を参照して下さい) ・コマンドの走らせ方 --- Command.win によるバックグラウンド実行 bgdrv を組み込んだ状態で Ko-Window 起動後、Command.win 上から kofork.x "<実行プログラム> [<引数>]" とします。また Command.win 上ではあらかじめ keymode bg と実行してお くことで (wsrv.rc に記述しておけます) 実行プログラム & といった記述が可能です。 例 gcc.x program.c -c -O & lha.x e arcfile.lzh & <実行プログラム> は必ずバックグラウンドで実行しますので、すぐプロン プトは戻ってきます。そこでさらに別のコマンドを実行させることができま すが、画面出力がごちゃまぜになるので通常は別のウィンドウを開いて作業 することになるでしょう。 (注意: Command.win での実行は、常にバックグラウンドになるのでキー入 力は使用できません。もしプロセスが入力待ちになってしまうと動 作できず止まってしまうので注意して下さい。) このように kofork.x を使えばバックグラウンドでコマンドを動かすことに なるわけですが、すべて bgdrv の仕様に依存します。必ず bgdrv のドキュ メントもよく読んでおいて下さい。 バックグラウンドプロセスを途中で止めるには kill.x を用います。 Ko-Window 自身のプロセスとバックグラウンドプロセスは全く別のものです。 名前も働きも似ていますが bgdrv の kill.x と Command.win の内部コマン ド kill を間違えないようにして下さい。 ・もしどうしてもうまく動かない時は fork/kofork.x で使う shell を、環境変数 FORKSHELL に登録ができるよう になっていますが、これを COMMAND.X にしてみて下さい。(つまり環境変数 FORKSHELL を未定義) 他の shell だと fork に使えない場合があるようです。 BG_Term は後ろにコマンドを書かなければ起動しません。ただ実行だけして も起動しませんので、エラーと間違えないで下さい。 ・注意点 絶対に、バックグラウンドプロセスをウィンドウ上から起動した状態で Command.win の run コマンド等でチャイルドプロセスを起動 (つまりウィ ンドウでない画面にすることを) しないで下さい。また同様に決してバック グラウンドプロセスが残っている時は Ko-Window を終了させないようにし て下さい。 <> BG_Term を使うと、なんとウィンドウ上でデバッガ db.x も動いてしまいます。も ちろん他のアプリケーションと並列に動作するため、そのままの状態で直接メモリ 内容を参照するなんてことが簡単にできてしまいます。(発見(?)者DEN0186みなつ) ●スクリーンモードについて Ko-Window 上では、画面モードの概念を統一し、表示画面サイズと色モードを完全 に独立して扱うことができるようになっています。 例えばそのアプリケーションが、16色モードを使っていようと、256色モードを使っ ていようと、使用者は 768x512 や 1024x424 など好きな画面サイズを選ぶことがで きます。 アプリケーション側の変更は一切必要ありません。また、このスクリーンモードは あくまで画面に表示する大きさを変更するだけですので、仮想画面の大きさとも無関 係です。  デフォルトで 8種類 (スクリーンモード0〜7) 定義されています。 256x256, 384x256, 512x512, 768x512, 704x424, 1024x424, 1024x848, 800x526 ただし、704x424, 1024x424, 1024x848 は 24KHz 対応のディスプレイが必要です。 デフォルトのスクリーンモードは 768x512 です。起動時に -s スイッチで変更可能な ので、常に 800x526dot で使いたい方は wsrv -s7 のようにして起動して下さい。 画面モードを変更するコマンド scrmode.win も付属しています。 なお CRTC パラメーターは、各自使用しているディスプレイに合せて修正可能になっ ています。こぺるさんの作られた SCRN を使えば、15/24/31KHz 切り替えやより多彩 な画面モード (816x552dot モード等) を選択することができるようになっています。 ● 8/10dot フォント対応 (WSRV.X v2.24+14 で追加された機能) IOCS レベルでサポートされている 12, 16, 24dot のフォントに加え、8dot, 10dot フォントも使えるようになっています。もちろん漢字出力も可能で、より画面を広く 使えるようになりました。 この 8dot, 10dot フォントを作り出すために、フォントドライバ hfont が必要で す。この hfont は Ko-Window で必須のドライバです。Ko-Window では現在 10dot フォントは必須です。8dot フォントはオプションです。 10dot フォントに 恵梨沙フォントを使用すると読みやすなります。 8dot フォントを使用する場合は 恵梨沙フォントが必須です。 ・24〜10dotフォントだけ使用する場合(最小限)に組み込むフォントファイル hfont hfont10.fon (常駐量 2560 byte) ・24〜10dotフォントだけ使用する場合(恵梨沙漢字使用)に組み込むフォントファイル hfont elisa10.zfn hfont10.fon (常駐量 179280 byte) ・24〜8dotフォント使用する場合(8dotが使える最小限)で組み込むフォントファイル hfont elisa8.fon hfont10.fon (常駐量 75296 byte) ・24〜8dotフォント使用する場合(恵梨沙漢字両方使用)で組み込むフォントファイル hfont elisa10.zfn elisa8.fon hfont10.fon (常駐量 252016 byte) Ko-Window用恵梨沙フォントは ELISAK10.LZH という名前で、でんでんネット、もし くは ftp.tohoku.ac.jp や Nifty にアップロードされています。 ●グラフィックポジション管理機能 (WSRV v2.24+13 で追加された機能) v2.24+13 ではグラフィック画面の管理が若干拡張されました。従来 256/65536色 モードの場合表示は画面左上の 512x512dot の範囲に限定されていましたが、その制 限がなくなりました。といっても、従来のグラフィックアプリケーションを使ってい る限りにおいては以前とほとんど同じ使い方になります。 +13 の新機能に対応しているアプリケーションの場合は、ウィンドウの位置によっ てグラフィック画面の表示可能エリアを自動で管理します。(gview.win等) そのため 単一のウィンドウであれば、256/65536色を使っても、1024x1024のエリアどこにでも 表示可能ですし、複数の場合は最後に操作したウィンドウの表示が最優先されるよう 調整されます。 ・従来 左上固定 ┌─────┬─────┐ |256/65536 | | |色表示可能| | |エリア | | ├─────┘ | | | | | | | └───────────┘ ・+13新機能対応アプリ ┌───────────┐ | |カレントウィンドウの位置に合せてエリア位置 | ┌─────┐ |をサーバーが自動管理(corlibのGpos関数を使う) | |256/65536 | | | |色表示可能| |+13で従来のアプリを使った場合は、位置の自動 | |エリア | |調整はありませんが、専用のマネージャーを用 | └─────┘ |いることで、表示可能エリアを任意の位置に変 | |更することができるようになります。 | | └───────────┘ ●仮想画面の最大サイズ変更 (v2.24+12で追加された機能) 従来 Ko-Window では、仮想画面の最大サイズが 1024x992 dot に制限されていま した。現在その制限がなくなり 1024x1024 dot いっぱいに使うことができるように なっています。またその分処理速度的にも高速になりました。 Ko-Window で使用する仮想画面サイズを変更するには、wsrv.rc の !Wsrv の項目 にある「WindowLines」と「WindowColumns」の部分を書き換えます。次のように書き 換えると、1024x1024 dot 仮想画面 V-RAM いっぱいに使えるようになります。(従来 は WindowLines は 62 までしか設定できませんでした) WindowLines 64 WindowColumns 128 ただし IOCS のマウスドライバの不都合をなくすために、ドライバとして Hmouse.x を組み込んでいなければなりません。Hmouse.x は Ko-Window での必須ドライバです。 ●拡張関数 Draw 機能を含め、ライブラリも拡張してあります。追加された関数については、 開発セット付属の NewFunc.doc を参照して下さい。 ●変換ウィンドウ FEP の変換ウィンドウは、マウスのボタンでドラッグして、画面のスクロール位置 に対する相対位置を変更できます。また FEP ウィンドウは外部からの追加登録も可 能です。(henkan.win 等) ●ウィンドウヒープ領域 ( WSRV.X v2.24+14 で変更) ウィンドウ使用時にヒープ領域が足りないとエラーメッセージが出るような場合は、 サーバーのヒープ領域を拡張する必要があります。(注意:このサーバーのヒープは 領域が足りなくなると自分で拡張しようとするので、エラーはフリーエリアが残って いる限りはでないはずです) wsrv.x --h のようにして起動時のオプションで初期ヒープ領域が指定できます。 は必ず Kbyte 単位で、デフォルトは --h64 です。オプションスイッチの指定方法が v2.24+13 以前と変更されているので注意して下さい。 ●マウスドライバ Hmouse.x について こぺるさんによって開発された、新しいマウスドライバです。X68030 に完全に対応 しており、マウスカーソルの表示を高速化することができます。また IOCS で制限を 受けていたカーソル移動範囲の限定がなくなるなど、IOCS のデバッグに近い、機能拡 張が施されています。 このドライバは CRTC のテキストマスク機能を使っていないため、ユーザーアプリ ケーション側でマスク機能を使用しても衝突することがありません。この Ko-Window サーバーでも CRTC 機能を活用することにより、さらに高速化されました。 よって Ko-Window 使用時には必ずこの Hmouse.x を組み込んで下さい。 ●デバッグモード (v2.24+13 で変更) デバッグモードは v2.24+13 で -d オプション1つに統一されました。また、従来 常にイベントスタックが使われ、エラー時には詳しい報告を行っていましたがそれを 使わない設定にできるようにしました。その方がシステム呼び出しの効率が良くなり 若干速くなります(default)。-d1 オプションをつけて起動すると、従来と全く同じ ものになります。 -d0 イベントスタックを使いません,高速化されます(default) -d1 イベントスタックを使います,エラー時に詳しい情報が出ます(従来) -d3 デバッグモードです,従来の -d スイッチ指定に相当します -d7 トレースモードです,従来の -t スイッチ指定に相当します トレースモードでは1ステップ毎に停止するので [SHIFT] キーで進めることができ ます。また [CAPS] を ON にして置けば連続で動作します。 ●環境エリア (v2.24+14 で変更) v2.24+14 からはサーバーが自分で環境領域を作成できるようになりました。-e オ プションをつけない場合は、従来どおり親の環境をそのまま使用します。-e オプショ ンを指定すれば、指定した分だけ環境エリアを作成し、親の環境があれば内容をコピー します。もし親の環境サイズの方が大きければサイズ指定を無視し、親の環境サイズ +1024byte の環境を作ります。なお、環境エリアはサーバーのヒープから確保するの で注意して下さい。 <例> wsrv -e4096 環境を 4Kbyte 作成して起動 wsrv -e 親の環境サイズ +1Kbyte を作成して起動 例えば親シェルが環境領域を切り詰めて、必要最小限分しかメモリを確保せず、チャ イルドプロセスで SETENV による環境変数追加ができないような場合に有効です。 ● Ko-Window 使用中の BG プロセスと FEP Ko-Window 使用中、BGDRV を使って make & など行うと、裏でプロセスが起動する たびに FEP が強制的に OFF にされてしまいます。コンパイル中にチャットなどを行っ ていると、入力途中でも FEP の変換行が消えてしまいたいへん不便でした。+14 で は、BG モードが ON 状態の場合 DOS 内部で呼ばれた FEP の OFF 命令 (KNJCTRL の MD=1) を無視するようにしました。これによって、BG でのプロセス起動によって、 いちいち FEP の変換行が消えてしまうことがなくなったはずです。 ●プログラムについて 作成にあたり、gcc 1.42 X680x0 1.28, has 3.09, hlk 3.01 を使わせてもらいま した。ライブラリは gnulib.a(wsrv.xのみ) を使用しています。XClib や libc は使 用しておりません。 ●著作権、配布について Ko-Window は小林忠司さんが作られたウィンドウシステムであり、その著作権は作 者である小林さん自身が保持されています。このサーバーはそれを元に私小笠原博之 がいくつかの改造改良を加えたもので、X68030 への対応は高津正道さんの手によっ て行われました。また ASK まわりの処理として Nifty NCB00625 やーさん、そして 表示関連の拡張のためにザル2さん、CRTCの画面モード設定にこぺるさんのルーチン コードが含まれています。 このバージョンのサーバーのサポートはすべて小笠原博之が勝手に行っているもの であり、問い合わせは必ず下記までお願いします。なお、私小笠原博之はプロジェク トチーム DoGA のスタッフではありません。 このプログラムを使用したことによるいかなる損害に対してもそれぞれ作者に責任 はないものとします。使用にあたっては十分注意して下さい。配布に関しては自由で す。 ●連絡先 小笠原博之 oga@dgw.yz.yamagata-u.ac.jp DenDenNET: DEN0006 COR. (米沢市 0238-26-3444 telnet://bbs.yamagata-u.ac.jp login:den ) :vi:se ts=8 sw=8: