MSXトラックボール/マウス
- 公開日: 2020/09/20
- 更新日: 2020/10/09
MSXを始めとする「ピン5:VCC、ピン8:信号出力、ピン9:GND」となるコントローラ端子に対応したトラックボール及びマウス。HAL研究所が1984年に発売した[1]CATトラックボール(HTC-001)の仕様が元となっており、翌年にソニーからGB-7としてOEM販売された[2]。これらのトラックボールと同様の制御方法で動作するマウスは1985年2月に日本エレクトロニクス(NEOS)から発売されており、同年4月にヤマハからMU-01としてOEM販売された[3]。MSX2からはBIOSにトラックボール/マウスドライバが組み込まれている[4]。
マウスとしては、FM77AVシリーズ[5]、PC-88VA、FM TOWNSで標準マウスとして正式採用されている。また、ローランドのサンプラーでも利用可能である。
少なくともMSXマウスについては、左ボタンを押しながら起動するとジョイスティックモードとなる[6]。ジョイスティックモードではマウス/トラックボールの移動方向のみを8方向で検出し、移動量は検出されない。通常はカウンタモードを使用する。カウンタモードでは左右方向(X)、前後方向(Y)の移動量を検出可能である。ピンアウトは以下の通り。
pin# |
Joystick Mode |
Counter Mode |
---|---|---|
1 |
UP |
Data Bit0 |
2 |
DOWN |
Data Bit1 |
3 |
LEFT |
Data Bit2 |
4 |
RIGHT |
Data Bit3 |
5 |
VCC |
|
6 |
LEFT BUTTON |
|
7 |
RIGHT BUTTON |
|
8 |
Not Used |
Strobe |
9 |
COMMON/GND |
GND |
MSX同人サークル アスキャットのサイトで公開されているMSXテクニカルガイドブックによれば、カウンタモードでの読み取り方法は以下の通りである。
ピン8をLにしてピン1〜4を読み取り(値1)、すぐにピン8をHにする。
33マイクロ秒待機して1〜4を読み取り(値2)、すぐにピン8をLにする。
25マイクロ秒待機して1〜4を読み取り(値3)、すぐにピン8をHにする。
25マイクロ秒待機して1〜4を読み取り(値4)、すぐにピン8をLにする。
95マイクロ秒待機して1〜4を読み取り(値5)、すぐにピン8をHにする。
33マイクロ秒待機して1〜4を読み取り(値6)、すぐにピン8をLにする。
17マイクロ秒待機してピン8をHにする。
17マイクロ秒待機してピン8をLにする。
接続されているのがマウスかトラックボールかは値6で判断する。値6が7〜9ならトラックボール、それ以外ならマウスである。
トラックボールにおいては値1と2を使用する。値1がX座標、値2がY座標の移動量であり、共に8が移動量±0、0が-8、7が+7を指す。
マウスにおいては値2〜5を使用する。値2を上位4ビット、値3を下位4ビットとして合成した8ビットデータがX座標の移動量であり、値4を上位4ビット、値5を下位4ビットとして合成した8ビットデータがY座標の移動量である。X、Y座標ともに2の補数形式[7]である。
nビットで-2^(n-1)〜2^(n-1)-1までの数を表現する方法。正の数については符号なしnビットに同じ。負の数は正の数をビット反転させて1を足した値である。
MSX2以降ではタブレット用のBIOSであるGETPADを拡張してマウス及びトラックボールの検出を行うことが可能となっている。具体的にはテクハンWikiの解説ページに記載されているように、Z80のAレジスタに装置IDを記憶させてアドレス00DBHをコールし、Aレジスタの内容(返り値)を参照することでマウス/トラックボールの情報を検出可能である。装置IDと返り値の対応は以下の通りである。
装置ID |
装置 |
返り値 |
---|---|---|
12 |
端子1に接続されたマウス・トラックボール |
つねに0FFHを返す(入力の要求に使用) |
13 |
X座標 |
|
14 |
Y座標 |
|
16 |
端子2に接続されたマウス・トラックボール |
つねに0FFHを返す(入力の要求に使用) |
17 |
X座標 |
|
18 |
Y座標 |