SVM9300音声合成キット
パーツ通販のサイトを眺めていたところ、懐かしいキットを発見して買ってしまいました。
諏訪精工舎のSVM9300を使った音声合成のキットです。
ICさえあれば回路はシンプルなので各社から似たようなキットが発売されていました。今回入手したものもデータシート記載の参考回路そのまま基板を起こしてパーツを揃えたといった感じですね。
当時もちろん関心はありましたが、ついに手は出さずじまいです。
1980年代のはじめ頃だったと思うのでもう35年位前の話です。
個人的に製作してきたものの紹介です。
電子的なものがほとんどですが、そうでないものも出来るだけ出していきたいと思っています。
回路図、ソースコードなどは出来ればすべて載せたいのですが、以下の理由で難しいものが多いです。
残っていないのではなく、そもそも書かないことが多かったためです。
もちろん仕事ならば書きますが。
特に古いものでは雑誌など掲載のものをベースにしているものがあり、オリジナルと分離できないものは公開できません。
5インチや8インチのフロッピーだったり、PC-9801フォーマットだったりして読むのが難しいものがあります。
パーツ通販のサイトを眺めていたところ、懐かしいキットを発見して買ってしまいました。
諏訪精工舎のSVM9300を使った音声合成のキットです。
ICさえあれば回路はシンプルなので各社から似たようなキットが発売されていました。今回入手したものもデータシート記載の参考回路そのまま基板を起こしてパーツを揃えたといった感じですね。
当時もちろん関心はありましたが、ついに手は出さずじまいです。
1980年代のはじめ頃だったと思うのでもう35年位前の話です。
こんなキットも発見したのですが、何のキットなのでしょうか?
「ELEHOBBY」とありますから嘉穂無線ですかね。
外部への配線はすべて切られていますが、「SP」はスピーカと思われますから何らかのサウンドでしょうか? ジャンパピンは選曲用で、これもオルゴールでしょうか?
ICのGSE3568で検索してみると「バトルサウンド」と呼ばれる効果音発生キットみたいです。残念ながらICのデータシートは発見できませんでした。
回路はシンプルそのものです。奥の150kΩは周波数の調整用、ケミコンは電源に並列に入っています。データシートが無いので想像ですが、ほとんど参考回路そのものなのでは無いでしょうか。
ハード編に引き続き今回は動作編です。
P8052AH-BASICはリセットしてもシリアルに何も出力してこないのでちょっと不安になりますが、スペースを送ってあげるとオープニングのメッセージが返ってきます。このスペースでターミナル側のボーレートを検出して自動的に合わせるようになっています。
クロック周波数をテキトーに決められるのはありがたいです。
間違ってスペース以外を送るとボーレート検出に失敗して正常に表示されないことがあります。その場合はリセットし直すしか無いと思います。
無事に立ち上がったところで簡単なプログラムを動かしてみました。
これを選んだのは昔 N-BASIC で 213 を計算させると 8192.01 となった記憶があるから。浮動小数点対応のBASICということでちょっと試してみました。
P8052AH-BASICでボード製作中と書いてから一月近く経ってしまいましたが、やっと出来上がりました。
動作確認ができる最小限の構成といったところです。
データ用メモリ空間の0000H~7FFFHに32kBのRAMを配置しています。プログラム用メモリ空間には何も接続していない(内蔵ROMのみ)のでBASICを使用する分には問題ありませんがネイティブコードを書いて実行することはできません。簡単な改造で対応可能なのでそのうち追加するかもしれません。
こんなに時間がかかったのは動作しなくて苦労したわけではありません。配線が終わって一発で動作しました。
ソケットを配置して電源ラインの配線を済ませた段階で「あとは機械的に配線するだけ」と安心して放置してしまったのが原因です。
昔使っていたAVRプログラマたちです。
これは秋月電子通商で扱っていたAKI-AVRキットです。
今はPIC用のAKI-PICでAVRの書き込みも可能になっていますが、以前はAVR専用のものがありました。
AVRの書き込みには12Vをかけてパラレルで書き込む方法とISPと呼ばれる通常電源のみでシリアルで書き込む方法があります。前者は主にライタのソケットに挿して書き込み、後者はターゲットボード上で書き換えることが可能です。
このキットはその形態からは前者のように思えますが、実は後者の方式で書き込みを行ないます。右端の6ピンコネクタを利用すればターゲット上での書換えも可能です。
これは私の2番目のAVRプログラマでした。AVRをはじめて使ったのはMP3プレーヤキットですが、この時はキット付属の簡易ライタを使用しています。
以前、SBC6303 が M5L2764K の個体差によって動いたり動かなかったりと書きました。
念のために n を増やしてみると、起動メッセージの途中で止まってしまう M5L2764K も見つかりました。リセットを繰り返すと止まる場所も一定していません。
動いたと思ったものも心配になってきます。試しにメモリダンプを実行してみると、案の定ダンプ中にハングアップしてしまいました。
ところで私の持っている 2764 は三菱の M5L2764K ばかりです。ふと他社のものでも同じだろうかと思って Intel の D2764 を調達して試してみました。するとどれも正常に動作するではないですか。64kB のメモリ空間全部をダンプさせてみても最後までいきます。
Intel のものと三菱のもので何かが違うようです。
手配していたロジックICが到着したのでSBC6303ルーズキットにMC6803を載せて試してみることにします。
そのままではMC6803を動かすのに支障があるので一部変更しています。
まずNMOSのMC6803と組み合わせるのに74HCシリーズはマズいので74HCTシリーズに換えます。キット資料によればLS/ALS/ASとありますが、VIHの問題なら74HCTでもいけるはずです。
次にMC6803はクロック上限が1MHzなのでクロックを下げなくてはなりません。シリアルのボーレートも変わってしまうので半分の0.6144MHzにすることにします。これならボーレートも半分の4800bpsになるのでROMのソフトウェアを変更する必要がありません。
いろいろやっているうちに何とか動き始めました。
まずはシリアルポートです。
Z8のシリアルはちょっと変わっていてシリアルのステータスレジスタがありません。それでは受信完了などをどうやって知るのかというと、割り込み要因レジスタを読むのです。ここまではマニュアルを読んでわかっていたのですが...
マニュアルを読み直していると、たとえ割り込みを使わないでポーリング処理をする場合でも一度EI
命令を実行しないと割り込み要因レジスタが有効にならないのだそうです。
ポーリングでやるつもりでマニュアルの割り込みの部分をちゃんと読んでいなかったので気付かなかったのでした。
指示通りに初期化するとあっさり動くようになりました。
パラレルの方はアセンブラが原因でした。
前回書いたようにタイマT0の設定は出来ていました。パラレルポートも試しにプルアップ・プルダウンしながら電圧を測ると出力に設定されているようです。それなのに出力すべきデータが設定できていませんでした。
何が違っているのでしょう?
ボードも出来たし、アセンブラも用意できたので、いざ動かそうとしているのですが...
予想外に苦戦中です。
まず簡単に動作すると思っていたシリアルが動かない。
ならばとパラレルポートに出力させようとしたのですが、これも出てこない。
こんな基本的なものが動かないとなるとプログラムが走っていないのではという疑いがでてきます。使っているZ8613はパッケージの隅が欠けているくらいなので生きていない可能性すらあります。
小さなことでも良いのでプログラムが走っている証が欲しいところです。
ROMから命令フェッチしているのがわかればCPUが生きていることがわかります。オシロスコープでもあれば良いのですが、持っているのは古いアナログのものだけ、それもすぐには出てきません。
ハードウェアが出来たら次はソフトウェアです。
Z8はハンドアセンブルできないほど複雑ではありませんが、アセンブラくらいは欲しいところです。今回のZ8だけでなくSBC6303ボードのHD63C03やMC6803、さらには手持ちのいろいろなプロセッサにも使いたいので出来れば多くのプロセッサに対応しているとありがたい。
ということで候補に挙がったのが「The Macroassembler AS」です。
開発ペースは遅い(というか止まっている?)ようですが、現時点でかなりの数のプロセッサに対応しています。8ビットが中心ですが、16ビット以上にも一部対応といったところでしょうか。マクロは使えますが、リロケータブルオブジェクトの出力は出来ません。
GNU binutils(の中の「as」)にも期待していたのですが、こちらは上とは逆で32ビットが中心で残念ながらZ8には非対応でした。