PC-6006SRを分解してみる

PC-6006SRは、PC-6001mkII以降で使える拡張RAMカートリッジです。商品名にSRと付いていますが、mkIIでも使用できます。初代機で使えるかは不明です。内部がどうなっているのか気になったので、実際に分解してみました。

写真集

回路説明

手抜きの回路図はこちらです。全部の配線を追うのは面倒だったので、必要最低限です。

使用しているエッジコネクタと、その用途です。

コネクタ要素
DRD2外部RAMへのリードイネーブル
WE外部RAMへのライトイネーブル
RAS2,EXCASDRAMの制御信号
MPXDRAMのアドレス切り替え
D0-D7データ信号
A0-A15アドレス信号
CS3端子は出ていますが未使用のようです

MPX

使用しているDRAMは64Kbitですが、DRAMの端子はA0-A7しかありません。DRAMは行アドレス(A0-A7)と列アドレス(A0-A7)をRAS,CAS信号に合わせて取り込みます。Z80のA0-A15をA0-A7とA8-A15に分離して、DRAMの行/列アドレスに取り込みますが、その切り替えタイミングをMPX信号が行っています。PC-6006SRでは、IC1,2の74157にMPXを接続して、A0-A7/A8-A15のどちらを使うのかを切り替えています。

DRD2

DRD2は外部RAMを読み込む時に有効になるようです。内部RAMの読み込み時には反応しないようです。

WE

Z80のBUSREQとWRが共にactiveな時にWEがactiveになるようです。つまりBUSREQとWRのNANDです。内部/外部RAM関係なく変化します。

RAS2/EXCAS

内部/外部RAM関係なく変化します。外部RAMのアクセスが発生した時は、RAS2/EXCASが共にactiveになります。

波形

内部RAM書き込み

内部RAM側の$C000に意味のない数字を書き込み続けるだけのプログラムです。


        di

        ; BUSREQ OFF
        ld	a,$2
        out	($93),a

        ; INTERNAL RAM MODE
        ; [READ]
        ld      a,$dd
        out     ($f1),a
        ; [WRITE]
        ld      a,$55
        out     ($f2),a

        ld      hl,$C000
        ld      a,12
loop:
        ld      (hl),a
        jr      loop
        

BUSREQとWRに合わせてWEが変化しています。内部RAMへの書き込みであっても、拡張コネクタのWE端子は変化するようです。RAS2/EXCASも変化していますが、WEとEXCASがactiveになるよりも前に、RAS2がdeactivateになっています。

外部RAM書き込み

外部RAM側の$C000に意味のない数字を書き込み続けるだけのプログラムです。


        di

        ; BUSREQ OFF
        ld	a,$2
        out	($93),a

        ; EXTERNAL RAM MODE
        ; [READ]
        ; 上位4bit C000-FFFF: EX => E
        ; 下位4bit 8000-BFFF: IN => D
        ld      a,$ed
        out     ($f1),a
        ; [WRITE]
        ; 内部:01, 外部:10
        ; Bit0-1が0000H-3FFFH
        ; Bit2-3が4000H-7FFFH
        ; Bit4-5が8000H-BFFFH
        ; Bit6-7がC000H-FFFFH
        ld      a,$95           ; 1001_0101
        out     ($f2),a

        ld      hl,$C000
        ld      a,12
loop:
        ld      (hl),a
        jr      loop
        

外部RAM書き込み時は、WE,RAS2,EXCASが同時にactiveになるようです。

内部RAM読み込み

内部RAM側の$C000の値を読むだけのプログラムです。


        di

        ; BUSREQ OFF
        ld	a,$2
        out	($93),a

        ; INTERNAL RAM MODE
        ; [READ]
        ld      a,$dd
        out     ($f1),a
        ; [WRITE]
        ld      a,$55
        out     ($f2),a

        ld      hl,$C000
loop:
        ld      a,(hl)
        jr      loop
        

RDは変化していますが、DRD2は変化しません。RAS2,EXCASが同時にactiveになっていないこともわかります。

外部RAM読み込み

外部RAM側の$C000の値を読むだけのプログラムです。


        di

        ; BUSREQ OFF
        ld	a,$2
        out	($93),a

        ; EXTERNAL RAM MODE
        ; [READ]
        ; 上位4bit C000-FFFF: EX => E
        ; 下位4bit 8000-BFFF: IN => D
        ld      a,$ed
        out     ($f1),a
        ; [WRITE]
        ; 内部:01, 外部:10
        ; Bit0-1が0000H-3FFFH
        ; Bit2-3が4000H-7FFFH
        ; Bit4-5が8000H-BFFFH
        ; Bit6-7がC000H-FFFFH
        ld      a,$95           ; 1001_0101
        out     ($f2),a

        ld      hl,$C000
loop:
        ld      a,(hl)
        jr      loop
        

DRD2が変化していることがわかります。RAS2,EXCASも同時にactiveになっています。

互換基板

SRAMを使った互換基板を、えすびさんが設計されています。