続続・ポケコン活用研究のPSGの記事

やっと音を鳴らすことができた。
いろいろ試しながら、最終的にできた回路。

若干の不満は残っているものの想定通りの動作はするようになった。

回路の挙動を確認するため、いつものI/Oボードに追加で作ったスイッチボード、何年か前のトラ技の付録基板のロジックチェッカを駆使して動作確認をする。
ちゃんとしたロジアナが欲しい。

最初にできた回路をチェックして、回路を変えたり追加したりするたびこんな感じで挙動の確認。
回路の挙動を見ながらデータシートの方もチェックする。
AY-3-8910のデータシートのタイミングの図。

元の回路は、「H」「L」の信号だけ見ればいくつか間違いがあるものの理屈はあっているようだが、タイミングまで考慮して回路を見ると動くかどうか怪しい感じ。
いろいろ試しながら回路を検討した結果、冒頭の回路図に至る。

細かいところは飛ばして、大まかにいうと、データの読み込みタイミングに影響がありそうなので、74HC245は撤去。
チップセレクト代わりの/A9はアドレス切り替わりとAY-3-9810のバスコントロール(BDIR,BC1)の切り替わりタイミングが重なってうまく動かないようなので、/A9はGND固定。
代わりに、アドレスが指定されていないタイミングではバスコントロールはINACTIVEとなるように74HC02を追加。
INACTIVE状態ではデータバスはハイインピーダンスとなるので、74HC245を撤去したことでの影響はなし。
クロックは手抜きするため多出力オシレータにおきかえ。
16MHzを4分周すれば4MHzで本の通りの音程データでいけるけど、秋月で売ってなかったので、秋月にあった14.31818MHzのものを8分周してMSXの仕様に合わせた。
ICソケットを使っているので同シリーズの違う周波数に変えられるし、ディップスイッテで設定を変えられるのでクロック周波数を変えて試すことができる。

74HC02をうまく使えば74HC04も不要になりそうだが、取り外しが面倒なのと検討用に追加した回路で74HC04を使っているのでこのままにした。

さて、実際にポケコンにつないで音を鳴らしてみる。

アセンブラなんて何年ぶりだろう。20年以上前か。
ポケコン活用研究1に載っているリストを打ち込んで音が鳴ることを確認。

 
 	ORG	100H
START:	LD	IX,R00
	LD	B,16
	LD	C,0
FLG:	LD	A,C
	OUT	(24H),A
	LD	A,(IX)
	OUT	(25H),A
	INC	C
	INC	IX
	DJNZ	FLG
	RET
R00:	DB	0DEH
R01:	DB	02H
R02:	DB	7BH
R03:	DB	01H
R04:	DB	3FH
R05:	DB	01H
R06:	DB	00H
R07:	DB	0F8H
R08:	DB	09H
R09:	DB	09H
R0A:	DB	08H
R0C:	DB	90H
R0D:	DB	01H
R0E:	DB	00H
R0F:	DB	00H

レジスタの値をいろいろ変えて動作を確認できるようにBASICでも試してみる。

 
10 PRINT "PSG TEST"
20 RA=0:RD=0
30 PRINT "Now RegAdd=";RA
40 INPUT "RegAdd  ";RA
50 INPUT "RegData ";RD
60 PRINT "OUTPUT RA=";RA;" RD=";RD
70 OUT &H24,RA
80 OUT &H25,RD
95 FOR I=0 TO 500:NEXT
100 PRINT "READ "; INP &H26
110 PRINT
120 GOTO 30

たしかPC-G801~803あたりまではBASICで直接I/Oアドレス指定の入出力はできずマシン語の準備が必要だったはず。
どのタイミングか知らないけどBASICからI/Oできるようになって楽になったものだ。
BASICのプログラムは、RegAddでレジスタを指定して、RegDataで値を入力。
それをPSGに送って、少し間をおいてPSGから値を読み込むようになっている。
いろいろ値を変えて音が変化するのを確認できる。

最後に出来上がった基板。
ブレッドボードで試作してから基板に組めばもう少しきれいにできそうなのだが、同じものを2回も組むのは面倒なので直接ユニバーサル基板に組む。
手持ちのブレッドボードでは間に合わなかったてのもあるけど。

結果、74HC245の跡地にジャンパー8本。
74HC02の追加スペースがなかったので、小型基板を使って無理やり実装。

まあ何とか音を鳴らすことができたので、ポケコン活用研究1に載っているサンプルプログラムを入れてみたいところだが、打ち込みが面倒だな。
音階データをMSX仕様に直さないといけないけど、そこはググってデータがあったのでそのデータに置き換えれば良さそう。
問題は当時のポケコンは3MHzで動いていたけど、PC-G850VSは8MHzで動いていること。音の長さをどうやって調整するか。
PC-G803を手に入れたから、そっちで動かせばいいか。

カテゴリー: ポケコン, 電子工作 タグ: , パーマリンク

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください