＠＠＠＠＠＠＠＠＠＠＠＠＠＠＠＠＠＠＠＠＠＠＠＠＠＠＠＠＠＠＠＠＠＠＠＠＠＠＠

　　　　　　Be88-BASIC　　マウス制御　　by ＳＨＩＮＴＡ

＠＠＠＠＠＠＠＠＠＠＠＠＠＠＠＠＠＠＠＠＠＠＠＠＠＠＠＠＠＠＠＠＠＠＠＠＠＠＠



★★★　Be88-BASIC でのマウス制御　★★★

　Be88-BASIC では、CALL 命令で機械語のマウスドライバを呼びだす DISK-BASIC 方式のマウス制御と、MOUSE 命令や MOUSE 関数を使う DOS-BASIC 方式のマウス制御の両方をサポートしています。
　マウスカーソルは、BeOS のものを使用します。



★★★　DISK-BASIC 方式　★★★


［　使用方法　］

　DISK-BASIC では、機械語のマウスドライバを CALL 命令で呼びだしてマウスの制御を行いますが、Be88-BASIC は機械語をサポートしていません。そこで、CALL MOUSE をマウスドライバの呼び出しと仮定してマウス制御を行う疑似的なサポートとなっています。
　Be88-BASIC でマウスを使用するにあたって DISK-BASIC と異なる点は、

・ドライバロードが不要
・マウス初期化が不要
・CALL 命令の変数名は必ず MOUSE でなくてはならない
・CALL MOUSE の引数は数値型変数であれば整数型でなくても良い
・MOUSE 変数に値は代入しておかなくて良い

の 3 点です。
　例を挙げて説明します。DISK-BASIC でマウスカーソルの位置を取得するプログラムは以下のようになります。

100 CLEAR ,&H7F00:DEF SEG=&H7F00:BLOAD "mouse.cod"	' ドライバロード
110 DEFINT A-Z
120 MOUSE.INI=&H100:FLAG=3:CALL MOUSE.INI(FLAG)	' 初期化
130 DEF SEG=0
140 INT33=PEEK(&H33*4)+PEEK(&H33*4+1)*256
150 MOUSE=INT33+3	' ファンクションエントリアドレス
160 DEF SEG=&H7F00
170 AX=3:CALL MOUSE(AX,BX,CX,DX,ES)	' カーソル位置取得
180 PRINT "X=";CX;" Y=";DX

　同様の働きをするプログラムが、Be88-BASIC では以下のようになります。

100 AX=3:CALL MOUSE(AX,BX,CX,DX,ES)	' カーソル位置取得
110 PRINT "X=";CX;" Y=";DX


［　サポートしている機能　］

　サポート状況は以下の通りです。

AX=0（マウス環境の初期化）：サポート済
AX=1（マウスカーソル表示）：未サポート
AX=2（マウスカーソル消去）：未サポート
AX=3（マウスカーソル位置の取得）：サポート済
AX=4（マウスカーソル位置の設定）：未サポート
AX=5（左ボタン押下情報の取得）：サポート済
AX=6（左ボタン解放情報の取得）：サポート済
AX=7（右ボタン押下情報の取得）：サポート済
AX=8（右ボタン解放情報の取得）：サポート済
AX=9（マウスカーソルの形の設定）：未サポート
AX=11（マウスの移動距離の取得）：サポート済
AX=12（ユーザー定義機械語プログラムのコール条件の設定）：未サポート
AX=15（ミッキー／ドット比の設定）：未サポート
AX=16（水平方向のマウスカーソル移動範囲の設定）：サポート済
AX=17（垂直方向のマウスカーソル移動範囲の設定）：サポート済
AX=18（マウスカーソルの表示画面の設定）：未サポート

注）

　マウス環境の初期化は、返値のみのサポートです。
　カーソル移動範囲を設定した場合、マウスカーソルは自由に動きますが、カーソル位置の取得を行うと、制限された移動範囲内での位置が返されます。



★★★　DOS-BASIC 方式　★★★


［　使用方法　］

　MOUSE 関数、MOUSE 命令を DOS-BASIC と同様にして使用します。


［　サポートしている機能　］

　MOUSE 関数のサポート状況は以下の通りです（全てサポートしています）。

0（マウスカーソルの X 座標取得）：サポート済
1（マウスカーソルの Y 座標取得）：サポート済
2（ボタンの状態取得）：サポート済
3（ボタンの押下回数取得）：サポート済
4（最後にボタンが押されたときの X 座標取得）：サポート済
5（最後にボタンが押されたときの Y 座標取得）：サポート済
6（ボタンの解放回数取得）：サポート済
7（最後にボタンが離されたときの X 座標取得）：サポート済
8（最後にボタンが離されたときの Y 座標取得）：サポート済
9（マウスカーソルの X 方向の移動距離）：サポート済
10（マウスカーソルの Y 方向の移動距離）：サポート済

　MOUSE 命令のサポート状況は以下の通りです。

0（マウスの初期化）：初期化不要
1（マウスカーソルの表示位置と表示状態の設定）：未サポート
2（マウスカーソルの形の設定）：未サポート
3（マウスカーソルの移動速度の設定）：未サポート
4（マウスカーソルの移動範囲の設定）：サポート済
5（マウスカーソルの色指定）：未サポート
6（マウスの解放）：解放不要

注）

　カーソル移動範囲を設定した場合、マウスカーソルは自由に動きますが、カーソル位置の取得を行うと、制限された移動範囲内での位置が返されます。

