2012年08月05日

画面描画期間検出(3)

 Hashiさんトコの掲示板に書いたものの追加、変更です。

 画面描画期間ですが、拡張コネクタに外付け回路を使う事により、確実に検出が可能になると思います。
 拡張コネクタには、アドレスバス、ライト、リードなどの信号が出ているので、これらを使用します。


・その1
 通常のCPUからアクセス時は、4MHz。
 VDG からのアクセス時は、14MHz。

 アドレスバスの変化タイミングを見る方法です。
 タイミング的にちょっと厳しいかも。


・その2
 VDG からのアクセスは、アドレスが決まった変化をします。
 (スクリーンモードによりますが)
 その変化のパターンを調べて、学習する回路を作ります。

 例えば、スクリーン3ページ2の場合、

 E000 E200 E001 E201 E002 E202 ・・・ となるので、このパターンを
 探して、1フレーム後にも同じパターンが来るかを見るような回路です。


・その3
 初代P6 のみの方法です(mk2以降は不可)。

 通常のCPUからのアクセス時は、RAS をアサート、CAS をアサート、ですが、
 VDG からのアクセスは、RAS をアサート、CAS をアサート、CAS をアサートと
 RAS1回に対して、CASを2回出力します。

 このパターンを見つけてフレームレベルで周期監視するのが、割と簡単そうな回路です。


・その4
 これも初代P6 のみの方法(mk2以降は、不可)で、多分回路が一番簡単で、使いやすそう。

 M1 がネゲート、CAS がアサートされた時、つまりCPU のM1サイクル以外でRAMからリードされた時のアドレスをラッチする。
 これを適当なI/Oポートに割り当てて、CPUから読み出すというものです。

 CPU がメモリからの読み出しを行った後で、画面描画期間になれば、VRAM のアドレスが読める事になります。
 また、VRAM のアドレスで、何行目を描画しているかが判別できます。

 判別前にメモリからの読み出しを数命令分止める必要がありますが、判別の長さを調整できたり、何行目かが判別できるというメリットがあります。



 その4をディスクリートで組むと、こんな感じでしょうか。

VSYNC検出回路例


 M1 の信号を1クロック遅らせているのは、M1の変化点とCASの変化点が同じために、ハザードが誤動作する可能性があるためです。

 実際に試していないので、動くかどうかはわかりません...


posted by えすび at 21:15| Comment(0) | P6解析:画面周り | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
×

この広告は90日以上新しい記事の投稿がないブログに表示されております。