PCM再生プログラムの追記です。
使っているメモリマップは次の通りです。
0x0000 〜 0x07FF :スクリーン1
0x0800 〜 0x7FFF :音声データ1
0x8000 〜 0x91FF :BASICプログラム、変数領域、スタックなど
0x9200 〜 0xF8FF :音声データ2
0xF900 〜 0xF9FF :ディスクなどのワークエリア
0xFA00 〜 0xFFFF :BASICワークエリア
MODE5、PAGE1 に設定した場合は、上記のようなメモリ配置になります。
(0x91FF は、プログラムサイズによります)
音声データが連続領域で取れないのですが、0x8000〜0x91FF をスキップすれば構わない事になります。
また、アセンブラリストのPCMSTART の中で、右端に『7+1』とかコメントで書いているのは、その命令を実行するクロック数を表しています。
+1 部分はウエイト分です。M1サイクルで+1 されます。
ですので、普通の命令は、+1 となり、CB XX / ED XX / DD XX / FD XX などの拡張命令は、+2 になります(M1サイクルが2回あるため)。
また、I/O 領域で、AY-3-8910 にアクセスする際は、さらに +1 されます。
音声を出しているループの、合計クロック数が、363クロックになるようにしています。これは、4MHz で考えた時に ループの長さが 11025Hz に相当するためです。( 4MHz / 11052Hz = 362.8 )
ところで、ある命令でクロック計算を間違えていました...
OUT (C),B の命令ですが、12+2 になっていますが、12+3 の誤りですね。


フィルタ回路が違うせいか、かなりキレイに音声が聞こえます。
ちょっと感動(゜゜)