CPU周りが動いたのでいつもの手順でシリアルコントローラのデバッグをやっておきます。NSC800ファミリのNSC858でマルチプレクスバスがそのままつながります
モデム制御信号/DSR,/CTS,/DCDは汎用入力として使いDIPスイッチを接続しておきました。
NSC858の内蔵レジスタは以下のように定義しておきます。8ビット空間4xHへのアクセスで16ビット空間4x4xHがイネーブルになりちゃんとNSC858がセレクトされました
初期化ルーチンです。シリアルコントローラではi8251は同じレジスタに連続してパラメータを書き込む、Z80SIO、uPD7201はポインタレジスタでコマンドレジスタを指し示す、といった複雑な手順に比べ、NSC858のプログラミングは非常に明快です。独立したレジスタに順不同でセットすればよく8250や16550系の手続きと同じでした。
ただしすべてのコマンドをベタで書き込んだところ何故かシリアルデータがふん詰まり状態で出ていかないので、試しにリセットコマンドの後にNOPを4つ入れてリカバリタイムを置いたところうまくいきました。
あとは1文字入力RX、1文字出力TXルーチンをつくるだけです。これは他のコントローラと同じで受信データあり(RxRDY)、送信バッファエンプティ(TxBE)フラグをチェックしてデータレジスタを読み書きします