PC-6001, MSX, PC-9801, FM-7共通
- 公開日: 2020/08/16
- 更新日: 2021/09/11
概要
PC-6001シリーズ(NEC)、MSX(各社)、PC-9801シリーズ(NEC)、FM-7シリーズ(富士通)の4機種のジョイスティック端子は、共にAY-3-8910、YM2203又はYM2608[1]のI/Oポートを用いて2端子の制御を行い、その回路構成もほとんど同じなのでここでまとめて説明する。なお、AY-3-8910の制御方法については別項にて説明する。
回路の詳細
PC-6001シリーズのジョイスティック端子の回路図はiP6 for Windows support pageの「ジョイスティックポートでRS-232C送受信」という記事に記載されている。この回路図によれば、ポートA(A0〜7)で両端子のピン1〜4、6、7からの信号入力を行い、ポートB(B0〜7)で両端子のピン6〜8への信号出力が行われるようになっている。
より具体的には、ポートAのA0〜3、A4〜5[2]を2つのセレクタICの信号出力端子に接続する。セレクタICの信号入力端子は両ジョイスティック端子のピン1〜4、6、7に接続される。そして、セレクタICのセレクト入力端子はポートBのB6が接続される。この結果、B6からLを出力すればポートAのA0〜5でコントローラ端子1の入力が得られ、B6からHを出力すればコントローラ端子2の入力が得られる。
A6、A7はジョイスティック端子用としては使用しない(後述)
ポートBのB0〜B5はバッファICを介してジョイスティック端子1及び2のピン6〜8に接続される。PC-6001及び9801ではバッファICが3ステートバッファであり、B7でピン6、7に対応したバッファICの信号出力端子をハイインピーダンスにすることができる。
以上をまとめると、下表のとおりである。なお、下表ではジョイスティック端子1、2をC1、C2と略記する。
PortA(R) |
A7 |
A6 |
A5 |
A4 |
A3 |
A2 |
A1 |
A0 |
Not used for Joystick ports |
pin7 |
pin6 |
pin4 |
pin3 |
pin2 |
pin1 |
||
PortB(W) |
B7 |
B6 |
B5 |
B4 |
B3 |
B2 |
B1 |
B0 |
OUT ENABLE (H=disable pin6, 7 output)[3] |
SELECT (L=C1, H=C2) |
C2 pin8 |
C1 pin8 |
C2 pin7 |
C2 pin6 |
C1 pin7 |
C1 pin6 |
PC-6001及びPC-9801のみ
各機種の差異
以下の説明は、下記のソースの記載に基づく。
MSXについてはMSX Assembly PageのI/Oポート表、MSX Datapack wiki化計画のMSX2+回路例及び電子機器 Junker「MSX2 FS-A1の回路図」
PC-9801についてはアスキーのテクニカルデータブック、radioc.datに記載のPC-9801-26Kの説明及びPC-9801-86ユーザーズマニュアル
FM-7についてはなべちゃんのホームページに記載のFM77AV回路図
(1) プルアップ抵抗
PC-6001、PC-9801、MSXは10kΩ、FM-7は3.3kΩである。PC-9801については所有するPC-9821Aeでの実測(PC-98DO/P-11相当回路を作成して計測)。
(2) ポートAのA6、A7
PC-6001及びFM-7では未使用。MSXではA6が日本語キーボードのレイアウト、A7がカセットテープ入力。PC-9801ではFM音源の割込[4]を参照する為に使用される。
(3) 信号入力端子のセレクタIC
FM-7では74LS257、PC-6001、PC-9801(PC-9801-26及び26K[5])、MSXは74LS157を使用
(4) 信号出力端子のバッファIC
MSX及びFM-7では単純なバッファICである74LS07を使用。それ以外の機種では、PC-6001では74LS367、PC-9801(PC-9801-26及び26K[6])では74LS244と、3ステートバッファを使用している
(5) ポートBのB7
PC-6001、PC-9801については上記の通りピン6、7の信号出力回路をジョイスティック端子から切り離すために使用する。MSXではかなキーのランプ点灯に使用する。FM-7では使用しない。
音源カードのディップスイッチで設定する
PC-9801-73及びPC-9801-86についてはASIC化されているので不明。ただし、マニュアルを確認する限りではB6は有効である
PC-9801-73及びPC-9801-86についてはASIC化されているので不明。ただし、マニュアルを確認する限りでは3ステートバッファを使っている