FM-11のシステムバスとFM16βのシステムバスの呼称
FM-11のシステムバスは、仕様書において「メインバス」や「本体拡張バス」などと表記されており、正式名称は不明です。 ここでは簡単のためとFM16βのバスと区別しやすいように「FM-100バス」と呼ぶことにします。
FM16βのバスは「FM130バス」もしくは「FM-130バス」と呼ばれています。ここではFM-11のバスの呼称に合わせて「FM-130バス」と呼ぶことにします。
二つのバスの比較
FM-100バスとFM-130バスを比較すると一目瞭然ですが、FM-130バスはFM-100バスを拡張したものです。主な変更点(拡張点)は以下の通りです。
- アドレスバスを20bitから24bitに拡張して最大メモリ容量を16MBとした
- データバスを16bitに拡張して16bit CPUに対応した
- バイト単位でアドレスが連続して割り当てられている8ビットのI/Oデバイスが16bit CPUでも動作できるように、データバスのバイトスワップ機能を追加した(I/OはFM-11の上位互換)
- CPU切り替え関係の信号の変更
上記3.の「バイトスワップ機能」ですが、「スワップ機能」というよりは「ステアリング機能」と呼ぶのがふさわしいかもしれません。
FM-100バスの信号は、CPU切り替えに関するものを除くとほとんどそのままFM-130バスで使用されています。バスのタイミングを制御する信号も*EBやRWBです。
バスブリッジ回路の検討
以上より、バスブリッジ回路(CPU切り替え機能を除く)に必要なのはFM-100バスから追加された必須の信号の生成です。以下の三種類があります。
- アドレスバスの上位4bit
- バイトスワップ機能を制御する信号*UBSと*LBS
- メモリアクセスの信号*MEMRと*MEMW
アドレスバスの上位ビットは値を0に固定すればよいでしょう。
バイトスワップ回路の制御は、AB0とNOT AB0をそれぞれ*UBSと*LBSに接続すれば良さそうです。
メモリアクセス信号は*EとRWBから生成します。
不足しているI/Oポートの追加
FM16βのI/OポートはほぼFM-11の上位互換です。また、ディスプレイサブシステムについても同様です。
不足するI/Oポートですが、FM16βのブートデバイスはFM-11と異なり、DIPスイッチで設定されるわけではありません。よって、FM-11のIPL ROMが正常に動作するためにはDIPスイッチの値を読み出すポートと等価なI/Oを追加する必要があります。
追加するI/Oポートですが、DIPスイッチを実装せずに固定値を返すことにします。FM-11 AD2+のIPL ROMを使う前提ですが、接続されているブートデバイスを全部"1"に、ドライブ番号を"0"にします。こうすることでブートデバイスを大容量のものから順番にサーチしてくれます。(実際の信号は負論理です。)
なお、ドライブ0以外からブートする需要はないと判断しました。
0 件のコメント:
コメントを投稿