ポケコンとPSGのタイミングについて追記。
Z80側のタイミングについても検討していたわけだが、74HC138に/IORQが使われている。
その結果、元の回路ではチップセレクト代わりの/A9が非選択状態になってからA0~A1(バスコントロールのBDIR,BC1)が変更される状態。
非選択状態でバスコントロールが変更されるためレジスタ指定機能が動かない。
MSXはどうなっているのかなと調べてみたら、MSX Datapack wiki化計画ってところに回路図があった。
やっぱりちゃんとタイミングを考えてる回路になっていた。
さて、基板ができただけで終わっても面白くないので、プログラム例を実際に動かしてみることにした。
打ち込むのは面倒なのでスキャナのOCR機能を使って取り込んでみたが・・・
文字化けがひどいやorz
一応取り込むことはできたので、テキストを成型して化けてる文字の修正を行う。
特に多かったのが「H」が「11」になっていたり、「0(ゼロ)」が「O(オー)」になっていたり。
他には「P」が「F」になったり「HL」が組み合わさって別の漢字になっていたり・・・
まあなんとか見直して修正していったりしたわけだが。
それでもいきなり実行できるわけもなく、実際にアセンブラに通ってエラーが出ないことを確認したいと思った。
さてポケコンでアセンブラしてもエラーがどこで出てどこを修正すべきか小さい画面では確認しづらい。
Windowsで動くZ80のクロスアセンブラでいいものないかと探したがなかなかいいものは見つからず。
他になにかいいものはないかと思ったら目の前にはMSXが。
MSXでM80を動かせばいい、ということで実行してみる。
やはり、修正漏れがあった。
M80でアセンブルした結果がファイルに保存できるのもありがたい。
案の定「0(ゼロ)」が「O(オー)」の違いがたくさん。
テキストエディタじゃわかりにくいわ。
ほかにも、EQUでラベル定義で数式が使えないっぽいので、そこは直接数値を設定。
M80でできないのではポケコンでも無理だろう。
そうやってエラーをつぶして最終的にエラーがない状態までもっていく。
エラーがなくなった状態のPRNファイルがこちら→PSG.PRN_.txt
WordPressでアップロードしたらなんで「_」がつくのか?
アセンブラできたので今度はL80でHEXファイルを作りたいと思ったが、使い方が思い出せん。
ググってもやっぱりわからん。
まあアセンブルできたので、全角のコメントは削除してポケコンでアセンブルすることにする。
そしたら、今度はラベルの文字数がオーバーしているため4か所ぐらいでエラー。
こちらは文字数をなおしてアセンブルしなおして無事実行できる状態に。
知らない曲だったので、音程が違っているのかテンポが速いのかはよくわからなかった。
音階データは元のままなのでPSGを4MHzで動かす前提になっているので、ディップスイッチを操作して4分周の3.579545MHzに設定するが、やっぱり元の曲が分からないので音程がどうなのかわからなかった。
一応クロックで音程は確かに変わっていたのは確認できた。
次に、PC-G803とPC-G850VSで比べてみたら、やっぱりPC-G850VSの方が倍速で再生された。
さてここまで確認出来たら速度調整をどうするか考えて、音程データをMSX仕様に直して知っている曲でも鳴らしてみるか。
文章だけじゃつまらないから動画で上げたいところだけど、動画の編集って面倒だな。
まう何年もやってないし。