ヤマハFMサウンドシンセサイザーユニット
SFG-01/05の解析


2023/08/18
当時からやってた身ですが、いいかげん時効でしょうし置いておきます。
個人的にはMIDI受信でPSG鳴らそうとしてます。

MIDI以外の割り込み(VDP)の時もベクタを発生できる優れものです。
Z80ではVDPの割り込みを受けてると受信がオーバーランするので、すっ飛ばしてます。
R800は間に合いますが、なぜかモード2ベクタがすべてFFHになるため、ベクタ255と256を参照してしまいます。1バイト大目に必要。
ページ0のスロットを切り替える必要があるため、8000H〜BFFFHの間に切り替えを置かないと拡張スロット面で面倒くせぇ〜ことになります。

実際にプログラム組んで実験中ですので、下記の情報はある程度合ってると思います。
SFG-01/05のROM以外での違いは良く解ってません。。。01に05のROMを載せても05として動く。

※SFGのスロット確認 0080HからMCHFM0の文字列が置いてある。専用スロットが拡張スロット上にある機種もあるので注意(YIS-805など)。

 SFG-01/05ポート
---------------
 3FF0 OPM 詳しくはX68Kあたりの資料で
 3FF1 OPM

 3FF2 Write YK-01 専用キーボード マトリクス選択(1ビットだけオンにすること)
 3FF2 Read YK-01 専用キーボード 状態 1xxx1xxxのビットで6鍵づつ、ゼロが押されてる部分

 3FF3 Write MIDIからのIRQベクタ モード2用※
 3FF4 Write MIDI以外からのIRQベクタ モード2用※
 3FF5 Read MIDI受信
 3FF5 Write MIDI送信
 3FF6 Read ステータス
        bit 0 1:TxRedy 送信可能
        bit 1 1:RxRedy 受信があった
        bit 2 1:TxEnd 送信データがない
        bit 3
        bit 4 1:OE オーバーエラー(RxRedy中に新たなデータが来た)
        bit 5 1:FE フレーミングエラー
        bit 6
        bit 7
 3FF6 Write コマンド
        bit 0 1:送信Enable
        bit 1 1:TxRedyからの割り込みEnable※
        bit 2 1:受信Enable
        bit 3 1:RxRedyからの割り込みEnable※
        bit 4 1:エラーフラグReset
        bit 5 1:MIDI以外から割り込みが発生したときベクタを乗せる3FF4※
        bit 6 1:MIDIから割り込みが発生したときベクタを乗せる3FF3※
        bit 7 1:リセット
 ※HX-34みたいにモード2対応できてない機種もあるので考え物である

ほかに参考になるところ→http://mzisland.com/club/sfg/index.html

戻る