バグ原因分かった

演奏してるとch1,ch2が鳴らなくなってch0のみになってしまうことがある。原因不明。

の原因判明。2つあった。

[1] WR#信号を時間が短い

  out PINC, R16 ; WR# HI->LO    ; CTR#2
  out PINC, R16 ; WR# LO->HI    ; CTR#2

のように連続して下げ上げしてたが、i8253(というか使ってたuPD8253C)のデータシート見てたら250ns下げとけ、とあったことに気付く。上げるところを4clk程度後ろへ順序入れ換えて対応。

[2] 制御基板設計ミス
[1]の対策を取っても直らないどころか却って悪化。入れ換えたときにタイミング重点な所を動かしてしまったかと調べたが、問題はみつからない。動作を見る限りシリアル→パラレルはOK、ゲート側も問題無し…ということは8253パラレルバス側に何かおかしなデータが乗ってるはず。だがバスに出力するのはシリアル→パラレル変換だけのはず……いや、8253が何か出してるとか…と思って調べてみると、RD#がオープン…orz
制御基板側でRD#にプルアップつけ忘れてた…

というわけで、10kをつけてついでにテンポ修正も入れて書き込み書き込み再生。
OK、ちゃんと鳴るようになった。