CPU実験室

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

シリアル接続

例によってモニタを乗せられるようにシリアルI/Fが使えるようにしておきます
 
シリアルコントローラTMS9902(AAC=Asynchronous Communication Controller)はCRUI/Fで接続されます。CRU空間のデコードを改めて見直したのですがメモリ空間と切り離すために/MEMENのロジックが誤っていたためGALの内容を修正。
/MEMEN=Hでメモリが選択されていない時にCRU空間がイネーブルになるようにします。
 
イメージ 1
 
つまり、メモリ空間とCRU空間は同じアドレスにオーバーロードできるので$F400、$F500のようにメモリマップされたI/Oと順に並べなくてもよいのですが、まぁここはそのままにしておきました。
 
シリアルI/Fにインクリメントデータを垂れ流しするテストプログラムです。
周辺I/OのレジスタアクセスをCRUレジスタに対して行うのが違うだけで、基本的には
 
 1.コントロールレジスタ初期化
 2.送信バッファが空になるまで待つ
 3.空だったらR0レジスタの内容を書き込み
 4.R0レジスタの内容をインクリメント
 5.2に戻る
 
という流れになります
 
イメージ 2