前回の続きで、PSG音源&ジョイスティックボードの話です。
音源のクロック
ジョイスティックの回路の話の前に、PSG音源のクロックの話をします。
MSX1では、PSG音源のクロックはメインクロックを2分周して供給している場合が多かったみたいですが、今回はこのボードでCPUクロックとは別に独自に持つことにしました。(CPUクロックをいじって遊びたくなったりするかもとおもって…)
PSG音源に供給するクロックの周波数についてはMSX1を踏襲して3.579545MHzを1/2して1.7897725MHzにしました。音楽の音程をMSXに合わせておきたかったのです。回路は以下のようなかんじです。
ジョイスティック端子部品
ジョイスティック端子はATARIジョイスティックの接続に似たもので、物理的には9ピンDサブです。基板側はメス端子となります。
基板実装タイプの部品は秋月電子など一般の電子部品店で容易に手に入ります。下の写真の右のタイプは秋月電子で売ってる9ピンメスDサブです。左のは地元部品店で購入したもの。ちっこい基板は2.54mm変換基板です。
上の写真のように部品によってちょっと違うのが、固定ネジ穴のところで、部品によっては固定ネジ穴にあらかじめ金具がついているものがあります。KiCadのデフォルトのフットプリントでは固定穴がありませんでしたので、プリント基板を自作するときは独自にフットプリントにネジ穴を追加しました。
ジョイスティックの接続回路
PSGにジョイスティックを接続する回路の参考回路ですが、ネットでさがすといろんな情報がでてきます。
MSXパソコンではジョイスティックが2本接続できるようになっていたものが多かったと思います。PSGにI/Oポートが2セットあるので直結しているのかと思いきや、PSGとしては基本は1つのジョイスティックのデータ(上、下、左、右、トリガー1、トリガー2)をAポートで読み取るようになってて、その先に74157マルチプレクサがつながって、ジョイスティックA/Bを切り替えてデータを読む構造だったみたいです。というわけで回路図はこちら。
CMOSタイプを使うことにしたので、プルアップ抵抗器が入っててちょっと煩雑になってます。あと、ジョイスティックだけつながればイイヤと思って省略した部分もあります。
ちなみに、74HC157ではなくて74HC257でもOKです。どちらも端子は一緒で、15番ピンがHになると74HC257はHiZになるってとこだけがちがうのです。今回は15番ピンはGNDに落としているので動作は一緒です。
ユニバーサル基板で試作
最終的にはプリント基板化しますが、ちゃんと動くかどうか確認したかったのでユニバーサル基板で試作してみました。PSG基板にはジョイスティック部分は乗り切らなかったので2枚構成です。
PSG音源の発声テストプログラムはZ80アセンブラで書きました。以前作ったFM音源VGMデータ演奏プログラムのちょっとだけ焼き直し版です。
テスト用ジョイスティック(パッド?)
ちなみに、ジョイスティック側の回路図はこんな感じです。STARTとかSELECTボタンはMSX用ジョイスティックにはついてなかったかも。わたしが中古で仕入れたジョイスティックやパッドにはついてませんでした。ジョイスティックの端子については以下のサイトの情報もたいへん参考にさせていただきました。
クレア工房さん:「MSX互換ジョイスティックポート」
https://www.clarestudio.org/elec/misc/joystick.html
上記回路をユニバーサル基板で組み立ててテスト用ジョイパッドもどきをつくりました。以下のような感じでつないで、CP/M上のC言語でジョイスティック信号チェック用プログラムを書いてテストしてみました。無事 動きました! やっぱりZ80アセンブラよりC言語は楽ちんです。
プリント基板化とジョイスティック(中古)をゲット
ユニバーサル基板でPSG音源とジョイスティックの稼働が確認できたので、いつものJLCPCBさんにお願いしてプリント基板化しました。無事1枚に凝縮できました。
そして、試作したジョイパッドもどきではなくてちゃんとしたジョイスティックとかジョイパッドがほしかったので、ハードオフで物色。てごろなものを入手したのであります。プリント基板化してテストしている様子がこちらです。
ビデオカード、PSG音源、ジョイスティックができたので、残るはキーボードI/FとROMカートリッジスロットです。次回はキーボードI/Fのお話をしたいと思います。
コメント