MSX(1983)
- 公開日: 2020/08/16
- 更新日: 2020/08/17
ハードウェア概要
1983年に、アスキー及びマイクロソフトによって提唱され、各社から販売されたZ80ベースのホームユース向けパソコンである。後継規格であるMSX2も含めヒットし、1980年代における日本のPC文化の一角を担った。
コントローラ端子の特徴
本機はPC-6001とほぼ同規格のコントローラ端子を2つもっている。ピンアウトは以下の通りである。
pin# |
Function |
---|---|
1 |
Digital in |
2 |
Digital in |
3 |
Digital in |
4 |
Digital in |
5 |
VCC |
6 |
Digital in / Digital out |
7 |
Digital in / Digital out |
8 |
Digital out |
9 |
GND |
ピン8をコモンピンとする多くのジョイスティックを使用する場合は、ピン8の出力をLに設定する必要がある。
ハードウェア実装
本機のジョイスティック端子は、PC-6001同様PSGコントローラであるAY-3-8910のI/Oポートを利用して実装されている。AY-3-8910のI/Oポートの制御方法は「PSG音源の利用」を、回路についてや各ピンとI/Oポートとの対応についてはPC-6001, MSX, PC-9801, FM-7共通を参照のこと。
MSX Assembly PageのI/Oポート表によれば、PSGを制御するためのI/Oポートアドレスは以下のとおりである。これはPC-6001と全く同じである。
$A0(W): AY-3-8910のレジスタ指定
$A1(W): AY-3-8910データ出力
$A2(R): AY-3-8910データ読み出し
ただし、MSXではI/Oポートを直接アクセスすることは推奨されていないようで、通常はBIOSを使ってジョイスティック端子のコントロールを行う。BIOSについてはMSX JapanのBIOSコールのページに記載があるが、以下の手順となる。
PSGレジスタへの書き込み: Z80のAレジスタにPSGレジスタ番号を、Eレジスタに書き込むデータを代入し、アドレス0093H(WRTPSG)をコールする
PSGレジスタの読み込み: Z80のAレジスタにPSGレジスタ番号を代入し、アドレス0096H(RDPSG)をコールする。レジスタの内容はZ80のAレジスタに記憶されている
ジョイスティックの方向取得: Z80のAレジスタに読み取る端子に対応した数値(0:カーソルキー、1:コントローラ端子1、2:コントローラ端子2)を代入して、アドレス00D5H(GTSTCK)をコールする。返り値としてAレジスタに方向データ(0:入力なし、1:上、以下8まで45度ずつ時計回りにずらした位置)が記憶されている
ジョイスティックのボタンの状態の取得: Z80のAレジスタに読み取るボタンに対応した数値(0:スペースキー、1:コントローラ端子1のAボタン(ピン6)、2:コントローラ端子2のAボタン、3:コントローラ端子1のBボタン(ピン7)、4:コントローラ端子2のBボタン)を代入して、アドレス00D8H(GTTRIG)をコールする。返り値としてAレジスタにボタンの状態(FFH:押されている、00H:押されていない)が記憶されている