2018年11月09日

同期信号検出について

  P6の垂直同期信号検出についてまとめました。
  いろいろ飛び交っているようなので(^^;)

1.初代機

  垂直同期は普通では検出不可です。
  ブログの前の記事では、サブCPUを使って無理やり検出してますが、実際にプログラムで使用するのにはちょっと難しいです。


2.mk2/66

  垂直同期、水平同期は、PSGのジョイスティックポートから読み出す事が出来ます。
  MODE1〜5のどのモードでも読み出せます。


; ジョイスティックポートにアクセスする
;

: レジスタ0x07(ミキサ)の上位2ビットを設定する(B:出力、A:入力)
; BASICではA、Bとも入力になっているため変更が必要
ld a,$07
out ($a0),a
ld a,$bf
out ($a1),a

; レジスタ0x0fに0xc0を出力(ジョイスティック1、8ピンに"L"を出力)
ld a,$0f
out ($a0),a
ld a,$c0
out ($a1),a

; レジスタ0x0eからジョイスティックポートを読み出す
ld a,$0e
out ($a0),a
in a,($a2)


  この状態で、Aregには、

  Areg[7-0]:垂直同期 水平同期 TRG2 TRG1 右 左 下 上

  が返ってきます。


  ただし...

  検出できる垂直同期は、垂直帰線期間の始まりとかではなく、どちらかというと単なるタイミング信号です。

  具体的には、画面走査線のカウンタ値で示すと以下の通りです。


  画面走査線カウンタ(0〜261)

   0〜 2:垂直同期="L"
   3〜261:垂直同期="H"
  37〜228:画面描画範囲


  帰線期間のちょうど真ん中辺りのタイミングのため、ちょっと使いづらいです。

  また、水平同期に関してはパルス幅が14MHzで64クロックしかなく、CPUからまともに検出する事が難しいです。


3.mk2SR/66SR

  mk2/66と同じ手順で垂直同期、水平同期は、PSGのジョイスティックポートから読み出す事が出来ます。
  MODE1〜6のどのモードでも読み出せます。

  さらに垂直同期をトリガにした割り込みが使用できます。

  ただし、あくまでも垂直同期で、垂直帰線期間の始まりとかではありません。


posted by えすび at 23:38| Comment(0) | P6解析:画面周り | このブログの読者になる | 更新情報をチェックする

RGBコンバータ使用時の注意

  今更ですが、RGBコンバータについての注意です。

  端子形状から他の機種でも使用できそうですが、P6以外の使用はしないで下さい。

  PC-8001mk2、PC-98、FM-7などで使用した場合、最悪は壊れる可能性があります。
 (1ピンに+12Vが出力されているため)

posted by えすび at 21:09| Comment(0) | HW:その他 | このブログの読者になる | 更新情報をチェックする