misc. > アタリ仕様ジョイスティック研究 > 機器側の仕様 > PC-6001系列(Vcc:pin5, GND:pin9) > MSX(1983)

MSX(1983)

ハードウェア概要

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:押されていない)が記憶されている


コメント(0)

コメントを投稿する際はここをクリック

Note

本サイトのハイパーリンクの一部は、オリジナルのサイトが閉鎖してしまったため"Internet archive Wayback Machine"へのリンクとなっています。そのようなリンクにはアイコン[archive]を付与しています。

本サイトはCookieを使用しています。本サイトにおけるCookieは以下の三種類のみであり、Cookieの内容に基づいてサイトの表示を変更する以外の用途には用いておりません。