[1chipMSX]
垂直同期割り込み→水平同期割り込みの間隔を調べてみる
※情報の正確さは保証できません。
割り込みの処理間隔が実機と違うのではないか?という疑惑が生まれています。
といっても、普通のソフトを動かす分には、なんら問題ない差違だと思いますが、
ハードの限界まで引き出しているようなソフトで問題が出るケースがあります。
水平同期割り込みは、走査線の一定タイミングで発生するでしょうから、たとえば複数ライン
で水平同期割り込み(走査線割り込み)を発生させたとしても、その時間間隔はテレビ出力
に同期するはずで、実機に対して過不足が発生することはあり得ないと思います。
一方で、垂直同期割り込みと水平同期割り込みの2つの関係ではどうだかわかりません。
そこで、大ざっぱにですが、垂直同期割り込みで空ループ処理を実施させ、一定ラインにセットした
水平同期割り込みの発生が遅れる空ループ回数を視覚的に表現するツールを作ってみました。
CHKTIM.COM を実行すると、画面上側が緑、下側が黄色になります。
垂直同期割り込みで緑にセットしていて、43ラインにセットした水平同期割り込みで黄色にセット
しています。
カーソルキーの上下で垂直同期割り込み中の空ループ回数を増減出来ます。
(※キーリピートは効きませんし、音も鳴りません。連打してください。)
ある程度増加させると、緑と黄色の境目(チラついている部分)が動き始めます。
ESCキーを押すと空ループ回数を表示して終了します。
上キーで増加を続けて、緑→黄色の境目が最初と同じ限界を見つけてください。
(動き始めたら、下キーで減少させて元に戻す)
その限界位置の空ループ回数を以下に示します。
1chipMSX (3.58MHzモード) 0242
BlueMSX (CPU 100%) 0248
1chipMSX (10MHzモード) 0595
実機 (Z80 3.58MHz) 未計測
実機(R800 7.16MHz) 未計測
数値が大きいほど、大きな負荷に耐えられます。
本当に実機と違っているのでしょうか!?
間隔を調べるツール
つづく
[▲上へ]