[1chipMSX]

垂直同期割り込み→水平同期割り込みの間隔を調べてみる
※情報の正確さは保証できません。

割り込みの処理間隔が実機と違うのではないか?という疑惑が生まれています。
といっても、普通のソフトを動かす分には、なんら問題ない差違だと思いますが、
ハードの限界まで引き出しているようなソフトで問題が出るケースがあります。

水平同期割り込みは、走査線の一定タイミングで発生するでしょうから、たとえば複数ライン
で水平同期割り込み(走査線割り込み)を発生させたとしても、その時間間隔はテレビ出力
に同期するはずで、実機に対して過不足が発生することはあり得ないと思います。
一方で、垂直同期割り込みと水平同期割り込みの2つの関係ではどうだかわかりません。

そこで、大ざっぱにですが、垂直同期割り込みで空ループ処理を実施させ、一定ラインにセットした
水平同期割り込みの発生が遅れる空ループ回数を視覚的に表現するツールを作ってみました。

CHKTIM.COM を実行すると、画面上側が緑、下側が黄色になります。
垂直同期割り込みで緑にセットしていて、43ラインにセットした水平同期割り込みで黄色にセット
しています。
カーソルキーの上下で垂直同期割り込み中の空ループ回数を増減出来ます。
(※キーリピートは効きませんし、音も鳴りません。連打してください。)
ある程度増加させると、緑と黄色の境目(チラついている部分)が動き始めます。
ESCキーを押すと空ループ回数を表示して終了します。

上キーで増加を続けて、緑→黄色の境目が最初と同じ限界を見つけてください。
(動き始めたら、下キーで減少させて元に戻す)
その限界位置の空ループ回数を以下に示します。

1chipMSX (3.58MHzモード)  0242
BlueMSX (CPU 100%)     0248
1chipMSX (10MHzモード)   0595
実機 (Z80 3.58MHz)     未計測
実機(R800 7.16MHz)    未計測

数値が大きいほど、大きな負荷に耐えられます。

本当に実機と違っているのでしょうか!?

間隔を調べるツール

つづく

[▲上へ]