Closed tsutsui closed 3 years ago
nono-0.2.2/vm/upd7201.cpp の uPD7201Device::ChangeInterrupt() によれば
nono-0.2.2/vm/upd7201.cpp
uPD7201Device::ChangeInterrupt()
// reset_txint_pend は通常 true、コマンド発行で false に落ちる。 // XXX INT DMA Mode はよく分からんのでスルー bool tx_int = (tx_empty && tx_enable && chan->reset_txint_pend);
とのことですが、現状は chan->reset_txint_pend に true をセットしてるのが uPD7201Device::ResetChannel() のチャンネルリセットだけなので 送信割り込みは起動直後の1回だけはかかる、という状態だと思います。 仕様としては uPD7201Device::WriteData() の「1文字送信」の後に
chan->reset_txint_pend
true
uPD7201Device::ResetChannel()
uPD7201Device::WriteData()
chan->reset_txint_pend = true;
の操作が必要なんじゃないかと思います。
上記修正を入れることで NetBSD/luna68k カーネルでも実機同様に送信割り込みかかるようになるようです。
この辺いろいろ書き直して対応しました。 7a41155a (2021-09-24) あたり
nono 0.2.3 で送信割り込みがかかっていることを確認しました。ありがとうございます。
nono-0.2.2/vm/upd7201.cpp
のuPD7201Device::ChangeInterrupt()
によればとのことですが、現状は
chan->reset_txint_pend
にtrue
をセットしてるのがuPD7201Device::ResetChannel()
のチャンネルリセットだけなので 送信割り込みは起動直後の1回だけはかかる、という状態だと思います。 仕様としてはuPD7201Device::WriteData()
の「1文字送信」の後にの操作が必要なんじゃないかと思います。
上記修正を入れることで NetBSD/luna68k カーネルでも実機同様に送信割り込みかかるようになるようです。