2022年05月17日

初代機の回路違い

  初代機の回路違いについて


  現在、初代機は2台所有しているのですが、それ以外に基板だけのものを1枚持っています。
  これは以前に基板だけのものをオークションで落としたものなのですが...

  今回、RGBコンバータを設計するときに、この基板を動かそうとしたのですが、何かおかしい動作をします。

  結局、サブCPUが死んでたのですが、それ以外に電源投入で点灯するキーボード上のLEDが点灯しません。


  調べてみると、このLEDを点灯させる回路自体が違う事がわかりました。


  通常の基板(表)
220517_02_初代通常表.jpg

  通常の基板(裏)
220517_02_初代通常裏.jpg

  バージョン違いの基板(表)
220517_02_初代異ver表.jpg

  バージョン違いの基板(裏)
220517_02_初代異ver裏.jpg

  赤い矢印の部分が違います。回路図では以下の通り。



  通常の基板の回路図
220517_02_初代通常回路.png

  バージョン違いの基板の回路図
220517_02_初代異ver回路.png


  キーボードの X10 への電圧が、"0V"と"5V"で違っています。

  このバージョン違いの基板に刺さっていた、キーボードの回路はどうなっていたんでしょうか?

  0V が与えられないため、LEDを点けるのが難しいような気がします。


posted by えすび at 17:42| Comment(0) | P6解析:サブCPUと8255 | このブログの読者になる | 更新情報をチェックする

SRのFM音源のタイマを使う

  FM音源(YM2203)を使用する時の話です。


  SRにはFM音源のYM2203が搭載されています。YM2203 には、一定間隔を数える、2つのタイマA/B があります。

  PC-88などでは、タイマが満了すると、割り込み信号をアクティブにして、CPUに知らせてくれるのですが、mk2SR/66SR では、この割り込み信号が接続されておらず、残念なことになっています。


  なので、タイマA/B は全く使えないと思っていたのですが、工夫次第でほぼ同程度の事ができます(既知かもしれませんが)。

  やり方は以下の通りです。


 ・ポート0xA3 を読み出す。
  このポートは、YM2203のステータスレジスタで、読み出される以下の通り。

  b7:busy時、"1"
  b1:タイマBオーバーフロー時、"1"
  b0:タイマAオーバーフロー時、"1"


  このポート0xA3 を、P6のタイマ割り込みで一定間隔で読み出せば、疑似タイマ割り込みが出来ます。



  実際のプログラムでは、以下のような実装になるかと思います。
  (タイマ割り込みなので、他のものが多いです)




;
; タイマ割り込み
; (1/1200秒割込み)
;
INTTIMER:
push af

ld a,(TIMERCNT)
inc a
and $0f
ld (TIMERCNT),a
jr nz,.next1

ld a,$06
call SETSUBCPU ; ゲームキー呼び出し

.next1:
ld a,(KEYCNT)
inc a
and $ff
ld (KEYCNT),a
jr nz,.next2
xor a
ld (KEYDATA),a ; タイマ満了時、キーバッファクリア

.next2:
;
; 1/600秒割り込み処理
;
ld a,(TIMERON)
or a
jr z,.next3

ld a,(TIMCNT600)
inc a
and $01
ld (TIMCNT600),a

call z,$8d84 ; 1/600秒割り込み

.next3:
ld a,(BGMON)
or a
jr z,.end

; YM-2203 TIMER割り込み
;
ld a,($8a14) ; 割り込みレベル
cp $05
jr c,.end

in a,($a3)
and $03
call nz,$9120 ; サウンド割り込み

.end:
pop af
ei
ret

TIMERCNT:
db $00

TIMCNT600:
db $00




  最後の方のサウンド割り込みが、それになります。
  タイマA/Bのいずれかが満了していれば、下位2ビットが00以外なので、$9120 を CALL します。

  通常、BGMを鳴らすルーチンが長いことが多いので、割り込みルーチンに入ると、フラグを立てて、割り込みを解除する事が多いです。

  上記の場合、$9120 からのルーチンでは、最初に、($8a14) に、$02 を設定して、ei をしています。
  BGMのルーチンの終了時に、($8a14) に、$05 を設定して終了しています。




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