CPU実験室

誰も見向きもしない古いCPUをいじって動かしてみようというプロジェクトです

I/Oテスト

ROMのアクセスがうまくいったので順番からいうと次はRAMの確認と行きたいところですが、うまくいったかダメかを外部に知らせる手段がないので先にI/Oの方をみてみます。

パラレル入出力として置いた8255で信号線の接続はピン機能そのままなのですがここで重大な設計ミスをやらかした気がしてきました。

f:id:O3I:20201031155709j:plain

Am29030のデータバスは32ビット幅ですがこれに8ビット幅のペリフェラルをつなぐとき、このように内部レジスタ選択のA0、A1とデータバスD0~D7はシステムバスの同名の信号にそのままつないでしまったのですが、はたしてこれでよかったのか・・

つまり32ビットバスに8ビットデータがアライメントされるとき、すべてのアドレスに隙間なく割り当てできるか、例えばMC68000の16ビットバスに8ビットI/Oをつなぐときは奇数アドレスへ、8086だったら偶数アドレスへ配置しなければならないという制約があります。前にこれで失敗してました

またCPUがデータバスの下位D7~D0に右詰めしてくれるかがわかりません。そもそもCPUがバイトオーダーの転送をサポートしていないと変なことが起きるかもしれません バスサイジングするとこうなるかも

アドレス線の差し替えならなんとかジャンパ飛ばせますがバスにデータが乗ってこないともうお手上げです

 

とりあえず8255を差し込んでおきました

f:id:O3I:20201031163921j:plain