以前に作成した画面描画期間の検出プログラムを改定しました。
vsync2_2.zip
拡張RAMが必要で、ページ4です。
前と同じですが、画面切り換えを使っている関係で、mk2、66では動作しません。
方法ですが、基本は同じです。
・画面描画期間の検出の方法(基本)
画面描画期間の時だけ止まっているCPU で、その止まっている期間を検出するためには、CPU の外部に基準の時計が必要になります。
SUB-CPU がつながっている8255 のポートを使用します。
特定ポートにデータを書き込むと、4MHz で60〜80クロックぐらいかかる処理があります。
これを使い、画面描画期間を判定します。
データ書き込み
↓
4MHz で45クロックぐらい待つ
↓
処理が完了しているかを判断する
画面描画期間以外:処理が完了しない。
画面描画期間:CPU が途中で止まっているため、実際には45クロック以上の時間が経っており、処理が完了する。
で判断します。
・画面描画期間の検出の方法(改定)
上記の基本の検出を2度行います。その際、一定期間(具体的には96クロック)空けます。
こうすると、画面描画をしている時は、1度目か2度目の検出で検出できるようになります。
ただし、検出には3走査線分の時間がかかります。
初代P6では、1走査線は 910クロック@14M(253クロック@4M)分の時間で、CPU が動作できる期間はその内の、296クロック@14M(83クロック@4M)ぐらいです。
また、mk2、66では、1走査線は 912クロック@14M(255クロック@4M)分の時間で、CPU が動作できる期間はその内の、304クロック@14M(85クロック@4M)です。
この走査線とCPUが動作できる/動作できない期間はほぼ一定間隔なので、検出期間をいい具合にすると、1度目の検出では引っ掛からなかったものを2度目の検出で引っ掛けられます。
図を描いて、タイミングを計算しないと、すごく分かりにくいですが...
ロジアナで、プログラムを動作中のものを見ましたが、多分ちゃんと動いているんじゃなかと思います。
2012年12月01日
この記事へのコメント
コメントを書く

