CPU実験室

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

フラグ読取り

送信は済んでいるのに送信完了のループから抜けられないということは脱出条件を満たさないということで考えられるのはこんなところです

1.フラグの論理を間違っている

  これは前にUSART:8251のステータスTxEMPTYのチェックで間違ったことがありましたが今回のSCN2681は送信バッファ空でTxEMT=1はデータシートから明らかです

 

2.条件分岐の判定を間違っている

  これもCPUによりフラグレジスタとさまざまな判定条件で飛ぶか飛ばないかが違うので勘違いしたことがありますがトランスピュータの条件分岐CJ(Conditional Jump)は単純明快で、フラグレジスタのようなものはなく「Aregが0なら飛ぶ、非0なら飛ばない」だけしかありません。なので今回の送信ルーチンの判定処理で合っているようです

3.そもそもI/O入力ができていない

  ここが一番怪しそうなのですがトランスピュータのクロックが比較的早いということとSCN2681のデータバスに双方向性バッファを挿入してしまったことで書込みはできましたが読取りの方がまずい可能性があります。簡単にDIPsw状態のポート入力を見てもいいですが先ず、現状コードのままタイミングを確認してみます