TK80/BSの
シンセシステムを復活/拡張したい〜
その52
SBC8080ボードを使った
TK80BS互換機の拡張I/Fの作製
2020年
5月23日
センタポンチ用のシートを剥がして、レタリングのシートを貼ります。部品の穴はカッタで慎重に開けます。本体の上に乗せて雰囲気を確認します。四隅のガードが厚いので、ケース間の隙間は結構あります。
フロッピエミュレータの固定スペーサは手持ちの物から選び、組み合わせて長さを調整します。フロッピエミュレータが固定できました。
リアパネルの折り返し部分はボードエジェクタと干渉するので、エアニブラで切り取りました。
リアにボードガイドレールを取り付けて、マザーの位置を決めます。4枚のボードを仮止めしてみます。良いようです。
フロント側のボードガイドレールの下側をアクリルの廃材から作製します。2mmで溝を入れて4個作製しました。
部品入れにあった、鉄製のプレートで上下のガイドレールを連結します。
フロント側のガイドレールはケースの下側からネジで固定します。
フロントパネルにLEDを取り付けました。少しきつめに穴が開いているので、少し圧力をかけてLEDをパネルに挿入し、エポキシ接着剤で固定しました。90個近くあるので、結構大変です。LEDはMC80+互換部が黄色、テンポ制御の16ステップシーケンサ互換部が赤色です。
5月24日
LEDのリードを曲げてダイナミック点灯用に連結しケーブルを接続します。MC80+部、16ステップシーケンサ部をまとめて40ピンのフラットケーブルネクタに配線しました。
VDPボードのアドレス線を配線しました。次回はPSoCのロジックのテストが出来ると思います。
5月29日
VDPボードの続きです。不足している配線を追加します。PSoCのみを実装して動作確認の準備をします。
マルツから購入した部品が届きました。74HC138と30ピンのレセプタクルです。予備のPSoCも購入しておきました。
30ピンのレセプタクルで、8255とSC−01を接続するケーブルを作成しました。仮止めしてみます。良いようです。
アナログディスカバリのロジアナでVDPのアドレスデコーダの動作確認を行います。VDPをマップしている7C20、7C21を簡易ICEでアクセスして確認します。アドレスデコーダの動作は良好です。
その後、VDPとDRAMを実装して動作確認しましたが、動作しませんでした。動作確認中にVDPの温度が上がってきたので、本家で動作させて温度を測ると、52℃を超えていました。高温になるのは正常のようです。
5月30日
VDPのデータシートを確認すると、バスのビット0がMSBでした。このVDPは元々、TIの16ビットのTMS99xxシリーズで、システム全体でビット0がMSBのようです。今回、DRAM周辺の配線はデータシートを見て配線したので問題なく、影響があるのはデータバスのみです。データはPSoCを介して接続しているので、PSoCのピンを入れ替えて、動作するようになりました。
VDPボードに空きエリアがあるので、Am9511(APU)を追加で載せようかと考えています。入手経路は忘れてしまいましたが、少なくとも、当時買ったものではないです。当時は高くて買えませんでした。基本的な使い方と同時の価格はここを参照してください。電源は5Vと12Vですが、5Vは100mA必要です。制御プログラムは新規に作成する必要があります。既存のBASIC内で使うのは難しそうです。変数の格納場所を探してフォーマットも変換する必要があります。因みに、Am9511の下に映っている18ピンの金色のチップはインテルの8008です。
VDPのRAM用にEbayで購入した16KビットのDRAMのMK4116ですが、Am9511を探していて、同じ部品入れで見つけました。購入しなくても良かったです(笑)。スピードグレード3でデートコードは81xxなのでアクセスタイム200nの81年製と思われます。ちなみにEbayの方はスピードグレート2、デートコードは14xxなので150nの14年でしょうか?試しに、古い方に交換してみましたが、問題なく動作しました。
VDPが動作したので、電源+LEDドライブ+SC−01ボードの作製を進めます。テンポ制御にADCを使うので、SARバイパスコンデンサC12のみを残して、ポートに接続されている必要無いコンデンサと抵抗を取り外します。
ボード裏で各電源の配線を追加しました。SC−01の電源は12Vです。
VDPボードが動作したので、ブロック図を更新しました。
6月6日
電源+LEDドライブ+SC−01ボードの8x9のLEDダイナミック点灯の配線を行います。チャンネルドライブ用トランジスタを9個実装して完了しました。
簡易ICEからシンセ用の8255をアクセスして8x9のLEDを点灯させ、電流制限抵抗を調整して本体のLEDと明るさを合わせます。
ボード上に電流制限抵抗を9個実装しました。
チャンネル1とゲートに55を出力してみます。動作良好です。
6月7日
手動で8255をアクセスする分には問題なかったのですが、実際にプログラムでシンセに音出しすると、各チャンネルが混ざってしまう不具合が発生しました。本家のMC80+は4000や4500シリーズの遅いロジックを使っています。8255からのアドレスのジッタがPSoCの内部では違うアドレス指定になってしまうためと思われます。チャンネルを分別するLUTにクロックを追加して同期化すると改善しました。
もう一つの不具合はテンポ制御用の16ステップのアナログシーケンサの互換部です。PSoCの4ビット基本カウンタで作りましたが、このカウンタのクリアは同期クリアでした。クリア動作させるためにはクロックが必要です。本家で使っているアナログシーケンサは10ビット/16ビットとも非同期クリアです。別のカウンタで使える物がないか確認します。
まだ、PSoC内のシンセ用のテンポクロックが出ないため、アナログディスカバリのパターンジェネレータでクロックを作って確認します。16ステップのアナログシーケンサの互換部の動作が本家と違いますが、それ以外は動作しているようです。
フロントパネルのLEDの配線は問題ないので、ボードガイドレールを固定しました。
シンセと接続する30ピンケーブルを作って、リアパネルに固定しました。次回、ADCでボリューム値を読み取り、16ステップのアナログシーケンサと合わせて、テンポクロックを作成予定です。
6月13日
シンセのテンポクロック用のテストプログラムを作成しました。ADCで読んだボリューム値を4倍して、ダウンカウンタに設定します。
プログラムを実行して、フロントパネルのボリュームでテンポクロックが可変できることを確認しました。実際には16ステップのシーケンサのステップとボリュームの値からテンポクロックを計算して出力します。必要な周波数は20〜500Hzです。
フロントパネルのボリュームが読めるようになったので、フロッピエミュレータをケースに取り付けます。スペーサを挟んでドライブ#1を固定し、LCDパネルをフロントパネルに固定します。
続いて、ドライブ#0です。同様にエミュレータ本体とLCDパネルを固定しました。上からドライブ#0、#1です。SDカードはラッチタイプではないのでパネルからの突き出しは長いです。
フロッピエミュレータの動作確認を行います。動作良好です。LCDのバックライトは少し明るすぎかもしれません。定電流ダイオードで電流を決めているようです。
6月14日
本家のSC−01ボードを参考に簡易回路を起こして、電源+LEDドライブ+SC−01ボードにSC−01の回路を追加しました。本家のSC−01は雑誌を参考に作ったと思いますが、回路図が残っていません。SC−01の手持ちは1個しかないので、本家ボードから抜いて、互換機へ挿して使います。Ebayでもチップは見つからず、入手困難です。右は本家ボードとの比較です。動作は良好でした。
SC−01とフロントパネルのLEDドライブの動画を作成しました。テンポクロックのロジックにデューティを50%にする2分周回路が入っているの忘れていて、テンポクロックが1/2になっていました。ボリュームを最大にしても、テンポが遅かったです。約21Mバイトの動画をダウンロードします。
テンポ制御の16ステップシーケンサのクリア問題が残っていますが、拡張I/Fの基本機能が動作したので、VDPボードにAm9511(APU)を追加します。とりあえず、データバスと制御線を追加しました。PSoCのピンは2本しか余裕がないのですが、必要なのは2MHzクロックとCPUと同期させるためのREADY制御です。クロックのみPSoCで生成してREADY信号は外部で作成する予定です。
電源+LEDドライブ+SC−01ボードにボリューム用コネクタを追加しました。SC−01の音声出力はリアパネルのボリュームに送ってから戻して、本体のスピーカからゲーム音、キー変換ユニットのブザー音とミックスして出力します。
ブロック図を更新しました。