!注意! 実践するなら、自己責任で行ってください(質問などはして頂いても構いませんが)。
音声回路、ジョイスティック回路は、次の通りです。
両方とも特殊な事はしていません。
実装した基板がコレです。
音声回路は、LPFだけだと音声が小さいので、LM386 で増幅しました。
部品も特殊なものはありません。VR は、B型でも構いませんが、A型の方が使いやすいはずです。
スピーカーで聞いている分にはほとんど気になりませんが、イヤホンで大音量で聞くと小さいノイズが聞こえます。
ジョイスティック回路は、FPGAの方で制御するので、接続のみです。
ただし、FPGA が、5V で入出力できないので、既存のジョイスティックで使用できないものがあるかと思います。
例えば、連射機能があるものなどで、3.3V 動作しないIC を使っているものなどは使えません。
どうしても使う場合は、3.3V <=> 5V の変換を行ってください。
この時、ジョイスティックの6,7 ピンは、入力以外に出力も行うことがありますので、注意が必要です。
また、8 ピンは、出力専用です。
ちなみに、PC-6001 のBASICでサポートされているジョイスティック以外にも、
・FM-TONWS 用JOY-PAD
4方向と、A、Bボタン、RUN、SELECTボタン
XPD-1LR (リブルラブル、クレージークライマーなど対応)
4方向×2、A、Bボタン
も動作することを確認しました。
通常の2ボタンは、0x1CA6 をコールするだけでOKです。
Aレジスタ= [ "1" , "1" , Bボタン , Aボタン , 右 , 左 , 下 , 上 ]
が返ってきます。
TOWNS の JOY-PAD のRUN、SELECT ボタンは、押した時に「右、左」「上、下」を同時に押したような回路になっています。
4方向ボタンで、右と左が同時に押すことは有り得ないので、このようにしているようです。
XPD-1LR は、パッドの中に74HC157(セレクタ)が入っています。
セレクト信号は、ジョイスティックの8 ピンに接続されていますので、この信号をH/L を切り替えることで、右か左のどちらの4方向キーの
値を読み出すかを切り替えられます。
実際には、AY-3-8910 のポートB に次の値を出力します。
・パッド1の左の方向キーの読み出し:"01000000"
・パッド1の右の方向キーの読み出し:"01010000"
・パッド2の左の方向キーの読み出し:"00000000"
・パッド2の右の方向キーの読み出し:"00100000"
上記2つのパッドは...P6 で対応しているソフトはなさそうです。