キーボード以外にゲーム用途ではジョイスティックやコントロールパッドが
用いられる。
パッドは本体の9Pinコネクタに接続する。この接続端子はパッド以外に
マウスなども接続する。
このポートは本体に二つあり、ハードウエア上はPSG音源LSIである
AY-3-8910に接続され、音源LSIに含まれるPIO機能を通じてコントロール
されている。
ゲームパッドのボタンの状態を得るには、このAY-3-8910のPIOポートから
ボタンの状態を得れば良い。
AY-3-8910はI/Oポートの0xA0-0xA2に接続されている。
I/O Address |
Function |
0xA0 |
レジスタセレクタ |
0xA1 |
Write |
0xA2 |
Read |
使い方は簡単で、0xA0にAY-3-8910のレジスタ番号を出力し、
0xA1/0xA2を通じてデータをRead/Writeすればよい。
レジスタ番号はPSGのためのコントロール以外に8bit,PIOポート二個分も
用意されている。
ここにジョイスティック用の二つの接続端子が繋がっている。
ジョイスティックやパッドの状態は、キーボードとは異なりスキャン操作を
必要としない。
単にポートの状態を読み出すだけで、コントローラの十字ボタンや
A,BボタンなどのON/OFF状態を知る事が出来る。
C言語で直接パッドの状態を得る場合は以下。
//AY-3-8910 REGISTER SELECT
outp(0xA0,0xE);
//PAD READ
pad=inp(0xA2);
もしパッド2を知りたければ、PIOの0x0Fにパッドのセレクタビットがある
ので切り替えるコードを追加すればよい。
//PAD2 SELECT
outp(0xA0,0xF);
outp(0xA1,0x1F);
//AY-3-8910 REGISTER SELECT
outp(0xA0,0xE);
//PAD2 READ
pad=inp(0xA2);
接続端子はPIOなので、ソフトウエア次第で応用が効く。
工夫すればより現代的なタッチパッドやコントローラを接続する事も可能だろう。
その場合はコントローラとの間のプロトコルや本体側のソフトウエアドライバに注意する
必要があるだろう。
最終更新:2012年04月22日 07:08