Z80版 YM2151 VGMファイル プレーヤー

前回作成したZ80マイコン用 YM2151音源のプレーヤをZ80アセンブラで作成してみました。

作成と言っても、こちらのサイトのArduinoスケッチをストレートコンバートしたものです。 ^^)>

Arduino で YAMAHA YM2151 を VGM ファイルで演奏させる
http://another.maple4ever.net/archives/2441/

Z80版プレーヤ アセンブラソース

作成したZ80マイコン用 YM2151音源のプレーヤのソースは こちらです。(ちょっと長いです)
gistにUPしています。数十年ぶりにZ80 CPUのインストラクションを調べながら作ったので無駄なコードがたくさんあると思います。

  • 音楽データはArduino用ヘッダファイルに16進形式でサンプル音楽が入っているので、別Z80 ASMファイルへawkでコンバートしました。
  • 音楽データは 9000hから配置することで決め打ちにしています。
  • Z80のI/O番地 20hにYM2151を配置したので 20h/21hへデータを出力しています。
  • 休符のためのウェイトルーチンは私の作ったZ80マイコン用に調整したので他の環境の場合は再調整が必要です。

アセンブリ

Windows上で、zmacを使ってクロスアセンブルしました。

> zmac --oo lst,hex Z80-VGM-PLAY.ASM

インテルHEX形式のオブジェクトが生成されますので、これを流し込めばOK!
先日紹介した機械語モニターのLコマンドで流し込みします。

ちょっと音楽ファイルはファイルが大きめなので、TeraTERMの設定で1文字づつウェイトを入れながら流し込まないとZ80マイコンで取りこぼしてしまいました。1文字1ms待つ設定にしたら、昔のマイコンのカセットテープばりに時間がかかりますw

実行

機械語モニターのLコマンドでロードが完了したら、8000hから始まるプログラムを実行します。

G8000

BASICではDATA文の途中で演奏が止まってしまいましたが、Z80機械語で作ったプレーヤーでは最後まで演奏できました!!

コメント