*********************************************************
    Mother Board Monitor Program for X Window System

        XMBmon ver.1.07pl1

    for FreeBSD (and possibly Linux, but not checked).
 *********************************************************


<< 0. どんなソフトか >>

 最近はマザーボードに CPU の温度や CPU Fan の回転数などをモニター
する機能がついたものが増えて来ています。マイクロソフト Windows 上
ではこのモニター機能を使ってリアルタイムに CPUの温度などをグラフ化
するプログラムがありますが、X 上でそのような機能を持ったプログラム
がないようなので作ってみました。ただし、機能は最低限のものしかあり
ません。コマンドライン版 mbmon では、温度・電圧・ファンの回転数を
リアルタイムに報告し、X Window System版 xmbmon では 3つの温度と
コア電圧を曲線グラフにして表示します。


<< 1. 新ヴァージョンでの変更点 >>

------------------------------------------------------------
patch level 1 (version 1.07 での問題点)

・AMD chipset (756, 766) の SMBus はサポートできてなかった。

・華氏への温度変換に間違いがあった。
------------------------------------------------------------

・いくつかの新しいハードウエアモニタチップ(Winbond の W83627HF,
  W83697HF、ITE の IT8705F, IF8712F)をサポート。

・いくつかの新しい SMBus インターフェイスをサポート(Intel の
  440BX 以降の 810, 820 などの ICH, ICH2、VIA KT266 の VT8233)。

・ハードウエアモニタチップの自動判別機能を強化(ただし、まだまだ
  完璧ではありません)。

・xmbmon を用いずに独自のグラフィックス表示をしたい場合(例えば
  MRTG を用いる)のために mbmon の出力機能の強化(Koji MORITA
  さんの patch による)。

・複数のマシンを同時にモニタする時に便利なように xmbmon でラベル
  表示ができるようにした(xload のように -label option/resource で)。

・温度を 2つだけ表示したい時には表示したくない項目を NOTEMP と
  することにより非表示にできるようにした(以前の version では、
  コンパイル時に決める必要があった)。

・温度の表示が華氏でもできるようになった。

・その他、細かいバグの fix。


<< 2. サポートしているハードウエアモニタチップ >>

 もし、自分のマザーボードに積まれているハードウエア監視機能が
以下のチップおよびその互換チップを使っている場合には動作する
可能性があります。

   National Semiconductor社         LM78/LM79
   WinBond社                        W83781D, W83782D, W83783S,
                                    W83627HF, W83697HF 内蔵
   ASUSTek社                        AS99127F
   VIA Technology社                 VT82C686A/B 内蔵
   Integrate Technology Express社   IT8705F, IF8712F 内蔵


<< 3. サポートしている SMBus インタフェイスチップ >>

 ハードウエアモニタチップへのインタフェイスとして、ISA-IO port を
用いる方法、VIA VT82C686A/B チップ専用の方法 (いづれも後述)、以外の
一般的方法としては SMBus (System Management Bus) があるが、これを
実現しているチップ毎にアクセスの方法が異なります。現在のところ、
以下のようなチップ(いわゆるチップセットのサウスブリッジ)に対応。

   Intel: PIIX4 (440BX), ICH, ICH2 (810, 815, 820 ...)
   VIA: VT82C596/B, VT82C686A/B (KT133/A), VT8233 (KT233/A)

ただし、Intel の ICH, ICH2 については実機でチェックしていませんので
動くことは保証できません。

 なお、実機で動作チェックしているマザーボードは以下の通り。

   ABIT: BH6(440BX+LM79), KT7A(KT133A), KG7(AMD761+VIA686A)
   ASUS: P2B,P2B-F,P2B-B(440BX+W83781D), P3B-F(440BX+AS99127F),
         K7VM(KT133+W83782D), A7V,A7V133(KT133/A+AS99127F)
   EpoX: BX6SE(440BX+W83782D), 8KHA+(KT266A+W83697HF)
   ECS:  K7S5A(Sis735+IT8705F)


<< 4. 使い方 >>

 パッケージを解凍してできたディレクトリで ./configure & make
すれば

      mbmon      mother board monitor for tty-terminal
      xmbmon     mother board monitor for X

の二つのバイナリができます。

((注意)) このプログラムは SMBus または ISA-IO port に問答無用で
   アクセスし、場合によってはシステムをクラッシュさせる可能性が
   ある「危険」なソフトウエアです。このことを十分認識して下さい。
   特に、IO port 0x295, 0x296 へのアクセスは NE2000 互換ボードと
   重なる場合がありますので、これらの port への書き込みが許されるか
   チェックしてください。私はこのプログラムによって起きた如何なる
   問題にも責任は取れません。

 プログラムのコンパイルが成功したら、まず、あなたのマザーボードで
ちゃんと動くかどうかをチェックしてみましょう。まず、root になって

   # ./mbmon -d

と mbmon プログラムをデバッグモードで動かしてみて下さい。これで、

   No Hardware Monitor found!!
   InitMBInfo: Undefined error: 0

というエラーメッセージが表示されずに、検知したハードウエアモニタ
チップの情報を表示すれば、このプログラムが動く可能性があります。
続けて -d オプションなしで起動して、

   Temp.= 34.2, 57.0, 48.0; Rot.= 4623, 4420, 2060
    Vcore = 1.86, 3.54; Volt. = 3.54, 4.93, 12.13, -11.98, -5.01

のような表示が 5秒おきに繰り返されるならば大丈夫です。とりあえず、
^C (CTRL-C)でプログラムを止めて 2つのプログラムをインストールして
下さい(mbmon は ^C 以外に止める方法はありません)。mbmon, xmbmon の
両方とも IO port に直接アクセスするので setuid root してパスの通った
ところに置いておく必要があります。Makefile の make install を参考に
してください。もし、mbmon を /usr/local/bin、xmbmon を /usr/X11R6/bin
に置くのでよければ、

   # make install

でこれらの作業をやってくれます。

 上にも書いたようにこのプログラムは IO port へのアクセスを行ない
ますので、例え setuid root してもこのアクセスが禁止されていれば
動きません。もし、

   InitMBInfo: Operation not permitted
   This program needs "setuid root"!!

となったとすると、FreeBSD のシステムの security level が厳しい
ためにIO port にアクセスできないと思われます(/etc/rc.conf 中の
kern_securelevel_enable, kern_securelevel 参照)。security level を
下げるか、すなおにあきらめてください。

 Linux の場合は Makefile 中の DEFS 変数に -DLINUX を付けて
コンパイルしてみて下さい。ただし、私の回りには Linux の動く環境は
ありませんので、私自身では実機での動作は確認していません。動かない
可能性も高いです(ISA-IO port で動く場合はかなり動く可能性があります。
また、VIA686A/B の場合は動作したとの報告を受けています)。


<< 5. より詳しい解説 >>

 このプログラムはマザーボードに積まれているハードウエアモニターチップ
として Winbond の W83781D chip をメインに考えられています。このチップ
では、温度が 3つ(Temp0, Temp1, Temp2)、電圧が 7つ(V0 - V6)、および
FAN の回転数が 3つ(Fan0, Fan1, Fan2) 測定できるようになっています。
mbmon ではすべての情報をテキストで xmbmon では Temp0,1,2 および
V0(Vcore)の情報をグラフで表示します。単位は温度については摂氏(C)
[version 1.07 から華氏(F)の表示も可能]、電圧についてはヴォルト(V)、
FAN の回転数については 回/分 (rpm) です。別のチップではこれらの情報の
うちいくつかはサポートされていません。例えば、VIA のVT82C686A/B の
場合は温度は 2つ、電圧は 5つ、ファンの回転数は 2つのみがモニターされ
ます。mbmon ではモニターされない項目は 0.0 または 0 と表示されます。
なお、mbmon は入力値としてモニター情報を表示する間隔(単位:秒、
デフォルトは 5秒)を受け付けます。

 xmbmon の場合 Temp0,Temp1,Temp2 をそれぞれ "MB","CPU","chip" という
項目で表示しますが、それらは X の resource として変更可能です
(xmbmon.resources 参照)。マザーボードによっては、これら 3つの温度が
実際に何をモニターした温度かは違っており、適切な項目名になっていない
と思いますので、適宜変更してください。また、2つしか温度センサーがない、
または、繋がっていない場合にはこれを表示させないようにできます。
そのためには Temp0,Temp1,Temp2 のいづれか 1つの項目を "NOTEMP"(または
ブランク '')に設定してください(詳しくは 6. のオプションの項参照)。

 自分のマザーボードでどのようなハードウエアモニターチップが使われて
いるかわからない場合は、先にも書いたように

   # mbmon -d
   # xmbmon -debug

というデバッグオプション付で起動することによりハードウエアモニター
チップの情報を得ることができます。これによってこのプログラムが使える
かどうかがかなりの程度判断できるでしょう。このプログラムでサポート
されているハードウエアモニタチップの内で、LM78/79 はマザーボード
の温度 Temp0 のみで、W83783S は Temp3 がありません。また、マザーボード
によってはモニターチップがサポートしていてもその機能を生かしていない
ものもあるようです。なお、通常 Temp0 がマザーボードの温度で、これは
ほとんど室温に近く変化に乏しいようです。Temp1,2 は温度センサーチップ
を繋いで始めて有効になる場合が多いのですが、最近のマザーボード(例えば
ASUS P3B-F)では PentiumII/III の CPU 内部にある温度センサーに Temp1
が繋がれていることもあるようです。私の試してみたマザーボードとその
デバッグの結果についてはこのパッケージ附属の DEBUG_info ファイルに
載せてあります。

 一般に最近のマザーボードではハードウエアモニターチップにアクセス
する方法として、SMBus (System Management Bus)と 古い ISA の IO port
による方法がありますが、新しいチップ(例えば ASUS の マザーボードで
多く使われている AS99127F など)は SMBus のみでしか使えないようです。
以前のヴァージョン(ver.1.05)ではこの SMBus には FreeBSD 3.3R より
あとにサポートされた device driver (intpm device) を通してアクセス
していました。しかし、この intpm driver はインテルチップセットで
ある 440BX のサウスチップ PIIX4 に対してのみ有効であり、他のチップ
セット、特に Athlon マシンで使われる VIA のチップセットの場合は
使えませんでした[注1参照]。今回の新しいヴァージョンでは、SMBus に
対するアクセスを行なう自前のファンクションを用意することによって、
OS の device driver のサポートのない場合にも SMBus へのアクセスに
対応できるようにしました。従って今回のヴァージョンではデフォルトの
コンパイルでは常に IO port のアクセスを行ないます。この意味でこの
プログラムは「危険」なプログラムです。しかしながら、OS でハード
ウエアモニタチップを操作できる intpm driver のようなデバイス
ドライバが有効な場合には、ver.1.05 と同様な SMBus の ioctl を
使った方法でアクセスさせることも可能です。このためには、コンパイル
オプションとして Makefile 中の DEFS 変数に -DSMBUS_IOCTL を付け
加えてみてください。./configure で /dev/smb0 があることが確認
されていれば、より安全な SMBus の ioctl アクセスファンクションの
方を使用します。

 また、VIA の VT82C686A/B の内蔵ハードウエアモニタ機能の場合には
Winbond のチップとは違った方法で ISA-IO port にアクセスすることに
よって温度等の情報を得ることができます。従って、これを合わせると
全部で 3つの方法でハードウエアモニタチップとアクセスすることが
できます。この VIA チップに特有の方法を method V、 より一般的な
ハードウエアモニタチップへのアクセス方法である SMBus による方法を
method S、そして LM78/79 や Winbond のチップによる ISA-IO port に
よるアクセス方法を method I、として強制的にそれぞれの方法でハード
ウエアモニタから情報を得るためのオプションが

   # mbmon -[V|S|I]
   # xmbmon -method [V|S|I]

です。マザーボードによってどの方法がサポートされているかを調べる
には、デバッグオプションに更にこのオプションを付けて起動してみる
といいでしょう。もし、これらの method オプションを付けない時には
method V、S、I、の順序でチェックして自動的に有効なアクセス方法を
選択して起動するようにしています。なお、mbmon と xmbmon にはこの
他にも多くのオプションがありますが、これらはヘルプオプション
-h (or -help)付きで起動することによって調べられます。また、xmbmon
の場合、それらは X の resource として .Xdefaults ファイルに記述
して制御することもできます。

 開発は FreeBSD 4.4-RELEASE 上で行ないました。Linux に対しては、
FreeBSD ports の linux_devtools-6.1 上で compile できることは確認し、
また、一部の方に動作確認をお願いし動作する可能性があることを確かめて
いますが、とにかく私自身で確認したものではありません。

 [注1] なお、ごく最近 VIA VT82C596/VT82C686 系のサウスチップ用の
   power management device driver (viapm driver) が作成されたそうで、
   最新の FreeBSD (version 4.X? or 5.X?) ではこれが使えるかもしれ
   ません(未確認)。その場合は、ioctl による SMBus access 方法が
   使える可能性がありますので、-DSMBUS_IOCTL コンパイルオプション付
   で作ったバイナリを使う方が安定性が高いかもしれません。viapm driver
   についての最新情報は、

   http://people.freebsd.org/~nsouch/iicbus.html
   http://www.planet.kobe-u.ac.jp/~takawata/acpi/

を見て下さい。


<< 6. オプションと xmbmon の X resource について >>

  mbmon は以下のようなオプションを持っています。

   # mbmon -h
MotherBoard Monitor, ver.1.07 by YRS
Usage: mbmon [options...] <seconds for sleep> (default 5 sec)
 options:
  -V|S|I: access method (using "VIA686 HWM directly"|"SMBus"|"ISA I/O port")
  -f: temperature in Fahrenheit
  -d: debug mode (any other option will be ignored)
  -h: print help message(this) and exit
  -c count: repeat <count> times and exit
  -T|F [1-7]: print Temperature|Fanspeed according to following styles
	style1: data1\n
	style2: data2\n
	style3: data3\n
	style4: data1\ndata2\n
	style5: data1\ndata3\n
	style6: data2\ndata3\n
	style7: data1\ndata2\ndata3\n
  -u: print system uptime
  -t: print present time
  -n|N: print hostname(long|short style)
  -i: print integers in the summary(with -T option)

 ここで、-V|S|I は上で述べたハードウエアモニタチップへのアクセス法
を指定するもの、-f は温度を華氏で表示、-d はデバッグモードで起動
するもの、-h はヘルプの表示です。-c 以下は新しく出力強化のための
オプションで、説明からわかると思いますが、-c count は count 回
出力した後終了する。-T|Fは温度、または、ファンスピードを下の style
の形で出力するためのもの、-u, -t, -n|N は直接ハードウエアモニタ
機能とは関係ありませんがマシンの他の情報を出力、-i は出力を浮動
小数点ではなく整数でするためのものです。

 xmbmon は X toolkit を用いて作成されており、標準的な X resource
(geometry, font など)が通常通り使えます。この他に xmbmon に特有の
resource は以下の通りです。

XMBmon*count:   下の sec の間に温度等を調べる回数 (default:4)
XMBmon*sec:     グラフの 1点を書く間隔の秒数 (default:20)
XMBmon*wsec:    グラフの全幅に対応する秒数 (default:1800)
XMBmon*tmin:    温度の下限の目盛、度C単位 (default:10.0)
XMBmon*tmax:    温度の上限の目盛、度C単位 (default:50.0)
XMBmon*vmin:    コア電圧の下限の目盛、V単位 (default:1.80)
XMBmon*vmax:    コア電圧の上限の目盛、V単位 (default:2.20)
XMBmon*tick:    温度・コア電圧の目盛のティックの数 (default:3)
XMBmon*cltmb:   Temp0 の線の色 (default:blue)
XMBmon*cltcpu:  Temp1 の線の色 (default:red)
XMBmon*cltcs:   Temp2 の線の色 (default:cyan)
XMBmon*clvc:    Vcore の線の色 (default:green)
XMBmon*cmtmb:   Temp0 用の項目名、表示しない時は NOTEMP (default:\ MB)
XMBmon*cmtcpu:  Temp1 用の項目名、表示しない時は NOTEMP (default:CPU)
XMBmon*cmtcs:   Temp2 用の項目名、表示しない時は NOTEMP (default:chip)
XMBmon*cmvc:    Vcore 用の項目名 (default:Vc\ )
XMBmon*method:  使うアクセス方法 (default:\ )
XMBmon*fahrn:	温度を華氏で表示、True または False (default: False)
XMBmon*label:   表示するラベル (default:なし)
XMBmon*labelcolor: ラベルの色 (default: black)

 デフォルトでは 20(sec)/4(count)=5 秒毎にタイマー割り込みを発生
させて温度等の情報を読みとり、20秒間の 4回の読みとり値の平均値を
グラフにプロットすることになります。xmbmon のウインドウの横幅に対応
する時間が 1800(wsec)秒、すなわち30分間で、もしこれを過ぎると以前の
グラフの値は消去されグラフは新しい値を更新していきます(ちょうど xload
と同じように)。以上の resource は xmbmon のとれるオプションと同じで、
xmbmon を起動する時に指定することもできます。-help オプションを
付けて起動するとこの説明が次のように出ます。

   # xmbmon -help
X MotherBoard Monitor, 1.07 by YRS
  options:
    : -g   (100x140)  <geometry(Toolkit option)>
    : -count     (4)  <counts in an interval>
    : -sec      (20)  <seconds of an interval>
    : -wsec   (1800)  <total seconds shown>
    : -tmin   (10.0)  <min. temperature>
    : -tmax   (50.0)  <max. temperature>
    : -vmin   (1.80)  <min. voltage>
    : -vmax   (2.20)  <max. voltage>
    : -tick      (3)  <ticks in ordinate>
    : -cltmb  (blue)  <Temp1 color>
    : -cltcpu  (red)  <Temp2 color>
    : -cltcs  (cyan)  <Temp3 color>
    : -clvc  (green)  <Vcore color>
    : -cmtmb   ( MB)  <comment of Temp1> [Not shown  ]
    : -cmtcpu  (CPU)  <comment of Temp2> [if "NOTEMP"]
    : -cmtcs  (chip)  <comment of Temp3> [set.       ]
    : -cmvc    (Vc )  <comment of Vcore>
    : -fahrn (False)  <temp. in Fahrenheit>
    : -label     ( )   for showing label [No label if null-string.]
                       and -labelfont, -labelcolor
    : -method    ( )  <access method (V|S|I)>
    : -debug           for debug information


<< 7. バグ >>

 verion 1.06 までにあった、他のプログラムが /dev/io を open したまま
でいると xmbmon が暴走する、というバグは 1.06pl1 (patch level 1)で fix
されました。今のところこの他に致命的なバグはないと思います。


<< 8. 他のハードウエアモニタチップに対応させたい人へ >>

 今回のヴァージョンでは自前の SMBus アクセスファンクションを実装
したので、OS でサポートされている device driver がなくても、SMBus
に繋がれたハードウエアモニタチップにアクセスして情報を得ることが
可能です。意欲のある人は PCI device configuration から SMBus を
使って power management を司るチップを捜し出しそのチップの使い方
を調査すれば[注2]、この mbmon/xmbmon で現在未対応のハードウエア
モニタチップや SMBus インタフェイスチップに対応させることができる
と思います。このために PCI Configuration を調べるテストプログラムが
testpci.c、SMBus をチェックするプログラムが testsmb.c、また、
Winbond-like なハードウエアモニタ機能をチェックするプログラムが
testhwm.c としてこのパッケージに含まれています。また、PCI
Configuration の情報を得るファンクションは pci_hwm.c/h に、SMBus
に直接アクセスするファンクション群は smb_io.c/h に入っています。
他のハードウエアモニタチップに対応させようとする方はこれらを活用
してがんばってみてください。ただし、これらは mbmon/xmbmon 自身より
更に危険なプログラムであることは言うまでもありませんので、OS の
クラッシュなどの不慮の事態に備えることをお忘れなく(私も一度ディスク
コントローラを間違ってオープンして書き込みを行ない、ファイルシステム
を崩してしまいました)。

 なお、どのマザーボードがどのようなハードウエアモニタチップを
使っているかに関する情報は例えば、マイクロソフト Windows 上の MBM
(Mother Board Monitor) というプログラムの開発者 Alex van Kaam さん
のホームページ、

   http://mbm.livewiredev.com/

が参考になるでしょう。または、日本では LM78mon というプログラムの
開発者である :p araffin.(米谷)さんのホームページ、

   http://homepage1.nifty.com/paraffin/

の support 掲示版での議論も参考になると思います。また、Winbond の
チップの詳しい情報は以下 Winbond のホームページに PDF ファイルとして
あります。

   http://www.winbond.com.tw/

または、Linux での hardware monitor (lm_sensor) のホームページにも
これらの多くのチップの PDF ファイルが集めてあります。

    http://www.netroedge.com/~lm78/

 しかしながら、一般にハードウエアモニタチップのアクセス方法の情報
は必ずしも公開されているとは限らず、その場合は残念ながら対応は
難しいかもしれません。

 [注2] SMBus (System Management Bus)は PCI bus に繋がったハードウエア
   を繰る汎用バスの一つで、ACPI のような Power Management の機能はこの
   バス上に実装されており、通常この上にハードウエアモニタチップが
   繋がっています。従って、SMBus を通してチップにアクセスするためには
   (1) PCI 上にある power management を司る chip を調べる(例えば Intel
   PIIX4(440BX)、VIA VT82C686A/B)、(2) それに繋がっているハードウエア
   モニタチップ(例えば ASUS AS99127F)を調べる、の 2段階が必要です。
   ここで、VT82C686A/B は少し特殊で south chipset 自身にモニタ機能が
   内蔵されてますので、SMBus を通しさずに直接アクセスできます。しかし、
   ASUS のマザーボードのように、686 のハードウエアモニタを使わずに
   その SMBus を通して自社の AS99127F チップを使う場合もあります。


<< 9. 謝辞 >>

・最初の公開 version 1.04 では ISA IO port へのアクセスによって
  Winbond chip からの情報を得るものでした。この時、このアクセス方法
  については、上記の MBM の作者の Alex van Kaam さんが当時ホームページ
  で公開されていたものを用いました(残念ながら今この情報は見当たり
  ません)。この情報がなければこのプログラムの開発は行なわれなかった
  でしょう。大変感謝しています(現在詳しい情報は上記の Winbond のホーム
  ページ上のデータシート PDFファイルにあります)。

・次の公開 version 1.05 の作成に当たっては、SMBus 対応および configure
  への対応について FreeBSD の intpm driver を書かれた渡辺尊紀@神戸大さん
  に全面的に御協力いただきました。今回のヴァージョンでは、この intpm
  に基づく SMBus への ioctl によるアクセス方法とは違うやり方を導入しま
  したが、device driver が導入された環境ではこの方法が最も安全な方法で
  あり、また、このアクセス方法の分離の雛型を示していただいたことは、
  今回も大変役にたちました。大変感謝しています。また、この version 1.05
  から Linux への部分的対応が行なわれましたが、それには 岡村耕二@九大さん
  に協力していただきました。また、ASUS のチップ AS99127F の制御情報に
  ついては上記の LM78mon の作者である 米谷紀幸(:p araffin.)さんに教えて
  いただきました。以上の方々に感謝いたします。

・前回の version 1.06 では、最近研究室で計算速度重視のために増えて
  きている Athlon マシンでも使えるようにとの目的で開発を行ないました。
  この時 VIA のチップである VT82C686A/B についてはハードウエアモニタ
  機能は公開されておらず、上記の :p araffin.(米谷)さんに全面的に情報
  を教えていただきました。また、ASUS の多くのマザーボードは VT82C686
  を使っていても、ハードウエアモニタは自社の AS99127F を使っており、
  この時には(FreeBSD 3.X では viapm driver が使えないので) SMBus に
  直接アクセスする必要があります。このための PCI Configuration や
  SMBus への直接アクセス方法などの技術情報の詳細についても、上記の
  :p araffin.(米谷)さんの全面的な御協力を得ました。この御協力がなけ
  れば今回のような形のヴァージョンアップ版は作れなかったでしょう。
  いろいろと教えていただいたことには大変感謝しています。

・今回の version 1.07 では、mbmon を利用してハードウエアモニタの
  データを独自に加工して使いたい方の希望を取り入れて、mbmon の
  出力機能を強化しました。これは、FreeBSD-users-jp 64929 の森田さん
  (morita@cybird.co.jp)のパッチを取り込んだものです。どうもありがとう
  ございました。

・今回の version 1.07 で、いくつかのハードウエアモニタチップと SMBus
  インターフェイスへの対応を拡大しましたが、この情報は Linux 用の
  lm_sensors Project による lm_sensors-2.6.2 のソースコードから
  得ました。このような有用なコードを公開しておられる The Lm_sensors
  Group (http://www.netroedge.com/~lm78) に感謝いたします。


<< 10. 最後に>>

 このプログラムは完全にフリーソフトです。どのように改変・変更
してもかまいませんし、コピー・配布も自由です。また、このプログラム
を使ったために何か不都合なことが起きても作者は一切の責任を負い
ません。今のところ、このプログラムをより一層発展させるつもりは
ありません。ただ、もしこのプログラムを元によりよいものができた時
には作者にフィードバックしていただければ嬉しいです(もちろん全然
義務ではありません)。

   2002年2月10日 九州大学大学院理学研究院物理学部門  清水良文

   e-mail:yrsh2scp@mbox.nc.kyushu-u.ac.jp
   http://www.nt.phys.kyushu-u.ac.jp/shimizu/index.html