BUSDIR がさっぱりわからない

MSXのカートリッジバスの10番ピン BUSDIR について

1chipMSX の BUSDIR は出力になっていますが、スロットの資料を見ると入力のはずです。

この BUSDIR 信号が何なのかさっぱりわからないためすこし調べました。

MSX の規格上、スロット拡張ユニットによりデータバスへの接続デバイス総数が上限(ファンアウト)の4あるいは5を超える可能性がある場合にバッファなどを介する必要が発生します。

双方向バッファを介する場合、入出力の向きの信号が必要になります。

この時スロット拡張ユニットに接続されたカートリッジから双方向バッファの向きを伝えるのが BUSDIR 信号のようです。

一部でいわれているような Z80 の BUSREQ やバスマスタや DMA に関係する信号ではないようです。

本体側は BUSDIR 信号がアクティブになるまで入力を待機するというわけでもなく、基本的には単に信号を無視します。

このため、多くの実機が BUSDIR が未接続であったり、 1chipMSX が BUSDIR を出力にしたうえでハイインピーダンスにしているのも特に問題がないはずです。

ただし、実機側にバッファがある場合は、接続するスロット拡張ユニットやカートリッジは正しく BUSDIR 信号を制御する必要がありそうです。

MSX 規格では I/O アドレスはスロット拡張されないため、 その拡張スロットに関係するメモリー入力かどうかは、RD と SLTSL でスロット拡張ユニット自身や本体が判定できますが、 その拡張スロットに関係する I/O 入力かどうかは、その拡張スロットに接続されたカートリッジが判断する必要があるため、 この判定情報を伝えるのが BUSDIR 信号であるようです。

「メモリ( RAM や ROM など)だけのカートリッジ(ゲームカートリッジなど)は、この BUSDIR 信号を操作する必要がない」という表現は、 メモリ入出力のみの場合はスロット拡張ユニットや本体側だけで BUSDUR 信号を制御できるという意味のようです。