サブカートリッジのコネクタのピン配置
2 o CPU PHI2 | 1 s GND 4 o ROMENABLE#? | 3 o SUBWR #? 6 i CPU D3 | 5 i CPU D2 8 i CPU D4 | 7 i CPU D1 10 i CPU D5 | 9 i CPU D0 12 i CPU D6 |11 o CPU A0 14 o CPU D7 |13 o CPU A1 16 o CPU A10 |15 o CPU A2 18 o Program ROM A16|17 o CPU A3 20 o CPU A11 |19 o CPU A4 22 o CPU A9 |21 o CPU A5 24 o CPU A8 |23 o CPU A6 26 o Program ROM A13|25 o CPU A7 28 o Program ROM A14|27 o CPU A12 30 s +5V |29 o Program ROM A15 3pin = Work RAM CS# | CPU R/W | SUNSOFT-4 26pin 4pin = Program ROM EN# | SUNSOFT-4 22pin
- 3pin は 0x6000-0x7fff への書き込みが有効になったときに動くようだ
- 4pin は CPU bank の page 0 から 7 を使用するときに L になる信号のようだ
メイン基板のROM
1 i?+5V |32 s +5V 2 i ??? |31 i?+5V |24 i Program ROM A16 |22 i Program ROM EN# 2pin = SUNSOFT-4 22pin
- 27C301 互換の配置になっているようだ
- しかし、27C301 の 2pin は OE# となっているために、 SUNSOFT-4 22 pin が Program A17 と仮定すると page 0 から 7 で有効になるはずで、OE が正論理なのかもしれないので、基板から ROM だけを外さないとよくわからない。
サブ基板の ROM
27C256 1 i Program ROM A15|28 s +5V 2 i CPU A12 |27 i Program ROM A14 |22 i SUNSOFT-6 ... |20 i GND アドレスバス,データバスはコネクタと同じ 1pin は Vpp なのでそこに A15 を配線している
- ROM の隣に SUNSOFT-6 というカスタム IC があり、 22pin はそこから制御される
- SUNSOFT-6 にはサブカートリッジコネクタの 2,3,4 pin がつながっているがデータバスはつながっていない
- 27C256 は 0x8000 byte のため 2 page 持つが、エッジコネクタ経由ではどのバンクを経由しても1通り、0x4000 byte のデータが出てくる。
- ソフトを逆アセンブルすると cpu address $6000 を write しているようで、どうもこれが SUNSOFT-6 のレジスタのようだ。Workram とかぶるが、データバスをみていないみたいなので問題ないらしい?
- 電源投入直後に CPU Bank を page 0 に設定する($f000 に 0 を write)だけではサブカートリッジからはデータが取得できず、 SUNSOFT-6 に書き込みをして($6000 に write)から有効になるようだ。
不明点
- SUNSOFT-4 の 22, 26pin の役割
- Work RAM CS# は無条件に有効になるのか。
- サブ基板の ROM は前半後半に同じデータが書かれているのか。
- エミュレータでなぜ動かないのか.
部品を外したり、波形を見ないとだめですね。