  Mach 用 XFree86 3.1 に関する README
  Robert Baron
  17 December 1994
  The X Japanese Documentation Project
  7 February 1999
  ____________________________________________________________

  目次

  1. Mach 用 XFree86 3.1 に関する README
  2. インストールされたバイナリの利用と設定
  3. 謝辞
  4. 配布物の構築

  ______________________________________________________________________

  1.  Mach 用 XFree86 3.1 に関する README

  注意:このテキストは XFree86 2.1 の README.Mach によく似ています。とい
  うのも、Mach OS という立場から見ると変わっている部分があまりないからで
  す。一方、構築手順は大きく変わっています。手順に従う時には注意してくだ
  さい。

  全ての XFree86 のクライアントのバイナリは、Mach 2.5 カーネルだけでな
  く、 Mach 3.0 カーネルでも動作するはずです。Mach 2.5 カーネルは従来の
  SVGA/VGA サーバと新しいアクセラレータサーバを両方サポートしています。
  Mach 3.0 カーネルである MK83 では、Mach 3.0 に新しいアクセラレータサー
  バをサポートさせるためと、SuperProbe を使うためには変更が必要です。こ
  の変更を行うと、完全 64KB の I/O ポートにアクセスできます。したがっ
  て、Mach 3.0 を使う場合、アクセラレータサーバを使うためにはリリース
  MK83 以降の Mach 3.0 カーネルを使わなければなりません。 XF86_SVGA サー
  バ、XF86_VGA16 サーバ、 XF86_Mono サーバは古い Mach 3.0 カーネルでもま
  だ機能するはずです。注意: コマンドラインオプション -no16 を指定する
  と、古い Mach 3.0 カーネルでも最新の SuperProbe を使うことができます。

  SVGA のクロック値の自動検出は Mach 3.0 カーネルでは全く動作しません。
  クロック値は XF86Config ファイルで指定しなければなりません。 Mach 2.5
  カーネルでは正しいクロック値を計算することができます。(したがって、ク
  ロック行用のデータを得るためには Mach 2.5 を使う必要があるかもしれませ
  ん。) SVGA チップセットを自動検出するためには、リリース X142E 以降の
  Mach 2.5 カーネルか、MK76 以降の Mach 3.0 カーネルが必要です。自動検出
  を行わずに、XF86Config file ファイルに Chipset 行で指定することもでき
  ます。

  最後になりますが、Mach 3.0 を使って色々なテストを行ったのは ATI Mach32
  アクセラレータサーバ(XF86_Mach32)だけです。このサーバはうまく動作し、
  リニアメモリ(バンク切り替え無しのメモリ)等の OS への要求が大きい機能も
  うまく動作するようです。ISA バス用の S3(801)ボードのテストも行われてい
  ますが、うまく動作するようです。S3 やその他のカードでは、非バンク切り
  替えメモリ機能の動作確認は行っていません。

  2.  インストールされたバイナリの利用と設定

  デフォルトでは、sup 経由で取得した CMU バイナリ配布が /usr/X11R6 にイ
  ンストールされます。ディスクに十分な余裕(約 45MB)があることを確かめて
  ください。 XFree 2.1 用の古いサーバは /usr/misc/.X11 にインストールさ
  れています。したがって、両方のサーバを共存させることは簡単にできます。

  Mach におけるマウスの選択方法は、オンラインマニュアルの XF86Config の
  エントリに書かれている方法と違います。 XF86Config の Device セクション
  の Pointer エントリは無視されます。マウスデバイスは必ず /dev/mouse に
  なります。

  Mach は何種類かの外付けマウスをサポートしています(Logitech の 3 ボタン
  マウス、Microsoft の 2 ボタンマウス、PS/2 マウス、Logitech MouseMan マ
  ウス)。バスマウスは全くサポートしていません。マウスの種類と COM ポート
  を指定するには、マウスデバイスのマイナー番号を使います。マイナー番号に
  設定する値は次の公式を使って計算します:

       < タイプ > * 8 + < COM ポート >

  < COM ポート > の値は 0, 1, ... であり、これはマウスを接続した COM ポ
  ートによって決まります。(アーキテクチャに寄っては、COM0 にはモデムを接
  続した方がよいものもあります。)

  作者らはノート PC 用に便利なハックをしてあり、でかくて邪魔な外付けマウ
  スを付けなくても良いようになっています。Scroll Lock キーによって、「滅
  多に使わない『ファンクションキー』」を使ってマウスの動作を示すモードが
  トグルするようになっています。F1, F2, F3 はそれぞれマウスの左、中、右
  ボタンです。1 度キーを押すとクリックしてマウスのボタンを押したことにな
  り、再びキーを押すとボタンを離したことになります。それから、上下左右の
  矢印キーで実際にマウスが動き、かつ上下左右の矢印キーの周囲斜め方向に
  Home, PgUp, End, PgDn キーがある標準キーパッドが付いている場合には、お
  分かりかと思いますが、これらのキーはマウスを斜め方向に動かします。試し
  てみてください...  注意: 最近のノート PC のほとんどには内蔵マウスが付
  いていますが、普通はボタンが 2 つしかありません。したがって、マウスの
  3 つのボタンにアクセスするために F1, F2, F3 キーを使うだけの場合は、こ
  の機能は現在でも有効です。

  3.  謝辞

  Elliot Dresselhaus さんは、SCO 専用のドライバを Mach 2.5 で動作させる
  ための移植の作業の最初の部分を行いました。Ernest Hua さんは Mach 独自
  のマウスの処理方法のサポートを追加しました。 Joel Jacobson さんは、リ
  リースが CMU 以外のサイトで構築できることを確かめるテストを行いまし
  た。Robert V. Baron は Mach 3.0 のサポートの責任者で、Mach における変
  更点を XFree86 開発グループにフィードバックしています。最後になります
  が、我々は XFree86 の開発者の皆さんに感謝します。

  4.  配布物の構築

  配布物の構築と設定の詳細については、
  xc/programs/Xserver/hw/xfree86/INSTALL を参照してください。

  筆者は Mach 2.5 カーネルを使っている Tahoe Binary Environment で
  XFree86 を構築しました。Mach 3.0「リリース」のインクルードファイルとラ
  イブラリはパスに入っていないことを確認しています。Mach のインタフェー
  ス(API)は Mach 2.5 カーネルと Mach 3.0 カーネルでは少し違いますが、
  Mach 3.0 カーネルは Mach 2.5 の上位互換となるように設計されています。
  つまり、Mach 2.5 のインクルードファイルとライブラリ(Tahoe Environment
  のデフォルト)を使って XFree86 を構築すれば、バイナリは Mach 3.0 でも
  Mach 2.5 でも動作します。

  Mach 3.0 のヘッダファイルとライブラリで構築することにした場合は、アプ
  リケーションは Mach 3.0 カーネル上でしか動作しません。
  vga*/*/*driver.c のいくつかと SuperProbe で行われている Mach のカーネ
  ルコールは、Mach 2.5 のコール名を使っています。Mach 3.0 でこれらの構築
  を行うためには、これらのいくつかある Mach 2.5 への依存部分を変更しなけ
  ればなりません。

  入手可能な Mach オペレーティングシステムには、異なるものがいくつかあり
  ます。そのうちの 1 つは Mt.Xinu によるものです。他には CMU が配布して
  いるものがあります。CMU は異なる 2 つの OS を配布しています。これが
  Mach 2.5 (モノリシックなカーネル)と Mach 3.0(Unix をサーバとして使うマ
  イクロカーネル)です。CMU の OS はどちらも、BSD4.3 Tahoe リリースから開
  発した同じバイナリのセットを使います。(Mt.Xinu システムは後の「世代」
  のアプリケーションプログラムを使う点に注意してください。最後に、CMU 内
  部で使われている環境はまだ外部で配布されているものとは異なります。この
  環境は AFS や Kerberos 等をサポートしています。) CMU Tahoe 環境では
  gcc 1.36  コンパイラを BSD 由来の cpp (__STDC__ ではありません)と組み
  合わせて使います。Mt.Xinu システムは gcc 1.37 を使います。

  筆者らはこれら全ての環境で XFree86 を構築したわけではなく、Mach 2.5 と
  一緒に配布されている CMU Tahoe 環境だけを使っています。どんなアプリケ
  ーション環境を用いても、Mach 2.5 でも Mach 3.0 でも XFree86 を構築する
  ことはできるはずです。難しい点があればお知らせください。

       ++XFree86 を構築するには、オリジナルの Tahoe 環境を何ヶ所か変更する ++
       ++必要があります。いくつかの「新しい」機能が呼び出されるので、      ++
       ++/lib/libc.a(mbtowc.c, putenv.c, strdup.c, strtol.c)に追加されてお ++
       ++り、多重インクルードを防ぐためにいくつかの古いヘッダファイルが変更++
       ++されています(/usr/include/{time.h,utmp.h})。これら 3 つのファイル ++
       ++の日付は「May 31 1994」のはずです。そうでない場合には、"sup" を   ++
       ++行って最新版を入手してください。XFree86 の構築は Mach 3.0 と一緒に++
       ++出されている gcc 2.3.3 コンパイラで行われました。たぶんこの gcc を++
       ++使うか、最新版を使いたいと思うでしょう。xc/config/cf/mach.cf には ++
       ++コンパイラに依存する部分が 1 ヶ所あります。cpp を次のように指定し ++
       ++てください:                                                       ++
       ++#define CppCmd        /usr/mach3/lib/gcc-lib/i386-mach/2.3.3/cpp  ++
       ++#define PreProcessCmd /usr/mach3/lib/gcc-lib/i386-mach/2.3.3/cpp  ++
       ++ここでは、コンパイラと Mach3 「リリース」のルートディレクトリが   ++
       ++/usr/mach3 であるものと想定しています。この習慣に従っていない場合 ++
       ++や、別のコンパイラを使っている場合には、それに合わせてこれらの 2  ++
       ++行を変更してください。コンパイルを始める前には                    ++
       ++      limit datasize unlimited                                    ++
       ++を実行しなければなりません。2 つの .c ファイル(lib/X11/StrKeysym.c++
       ++と programs/Xserver/XIE/mixie/fax/faxtabs.c)については、デフォルト++
       ++の 6MB を越えるサイズの中間ファイルが生成されるためです。最後にな ++
       ++りますが、Local CMU Environment を構築する場合には、              ++
       ++/usr/cs/include がパスに<em/入っていない/ことを確認してください。 ++

  通常の XFree86 ディストリビューションでは、 bin ディレクトリ内の全ての
  サーバが root に setuid されています。Mach では I/O へのアクセス権限を
  管理するのは root ではなく /dev/iopl です。Mach の場合に必要なのは、X
  サーバが /dev/iopl を読み書き可能でオープンできることです。これを実現
  する方法はたくさんあります。

  $XFree86: xc/programs/Xserver/hw/xfree86/doc/Japanese/README.Mach,v 1.1.2.2 1999/11/26 15:23:06 hohndel Exp $

  $XConsortium: Mach.sgml /main/7 1996/02/21 17:45:27 kaleb $

