CPU実験室

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

シリアルテスト(2)

ここまでくればドライバの作成は容易です。1文字入力RXCHAR、1文字出力TXCHARをさくっと記述しました。

 

f:id:O3I:20201210115614j:plain

・・と簡単に言いましたが実は紆余曲折があって、見ての通りステータスレジスタに立つビットをテストする処理がかなり冗長な書き方になっています。もっと簡単に書けるのかもしれないのですがいまいち自信がありません。Am29kプロセッサにはもちろん演算結果を示すフラグ(ALU Status (ALU, Register 132))が存在しますがそれを直接参照する命令が見当たらないので比較命令CPXXで結果のTRUE/FALSEのブーリアン値をいったん任意のレジスタに書き出し、引数にブーリアン値を持つ条件分岐JMPT/JMPFで飛ぶという作りにしていますがこのやり方が合っているかはわかりません。

 

いよいよ最後まで残っていたAm85C30をソケットに実装、Dsubコネクタも付けました。

f:id:O3I:20201210115627j:plain

 

インクリメントするデータでTXCHARルーチンをコールするループ処理をROMに焼き付け、TxDラインを観察してみると最小パルス幅26us(逆数は38.4kHz)でちゃんと連続的にキャラクタ送出しているようです。

f:id:O3I:20201210115717j:plain

 

ターミナルに接続するといつものように垂れ流し文字列が出てまずは成功です。

f:id:O3I:20201210115641j:plain