MSX turbo Rの内蔵メモリ1MByte化の不具合の話

A1GT/A1STの内蔵メモリ1MByte化ですが、成功しなかったという事例が昔からあるようです。
改造方法についてはここでは具体的に記載しません。
症状としては「起動しない」の一言に尽きて、単純に改造に失敗している場合もありますが、改造は成功しているのにメモリとの相性で起動しない、というのが実際にあります。
※ICソケットで交換したところ、同じ514400系でも動くものと動かないものがあるなど。

ただ、この症状、「リセットを連打するとたまに起動して、起動してしまえばメモリチェック等も問題なし、途中で不安定になるようなこともない」という現象のようです(リセット連打とか試さないで電源ONで起動しなかった時点であきらめてる人も多い?)

裕之の所持しているGTも、まれに起動しないことがあり(95%は起動する)、その場合はリセット連打すると起動する状態でした。
発生頻度が低いので調査も面倒ですのであまり気にせず使っていましたが、今更、発生頻度が高いGTを入手しましたので詳しく調査してみました。

まず、あたりをつけるところは初期化なのですが、実際にCPUはどこまで動いているのかというのをロジアナで追ったところ、少なくともR800/Z80は正常に動いていて、BIOSでのワークエリアの初期化までは動いており、その後DRAMにアクセスできずに暴走しているということがわかりました。ただしRASやCASは正しく出ています。
ですので、S1990やR800やT9769Cは正常に動作しているようです。とすると、やはり正常に動いていないのはDRAMのようです。
しかし、514400系のDRAMにはリセット端子なんてありませんし、最近のSDRAMのような初期化シーケンスなどもないはずなので、データシートを調べてみたところ、テストモードというものがありました。

TC514400(東芝?)

テストモードへの移行方法の記載がありますが、移行シーケンスを伴わなくても、リセット入力が無い以上、電源投入時に勝手にテストモードに移行する可能性があります。
それ以上に重要なのは、テストモードから抜ける方法ですが、
「CAS before RAS」または「RAS only」でノーマルモードに戻ると記載があります。
ちなみに、R800はCBRもRAS onlyも発行していないように見えます(R800のUMではCBRになってますが、実際にはhidden?)。
ですので、いったんテストモードに入ってしまうと、正常にアクセスできないようです。

MSM514400(沖)

こちらも同様に、「CBRリフレッシュ」もしくは「RAS-onlyリフレッシュ」でノーマルモードに戻ると記載あります。
どうやらメーカー間でも投入/戻り手順は同じようです。

HYB514400(Infineon/SIEMENS)

こちらは、「CBR」「RAS-only」のほか「hidden-refresh」でも抜けるようです。


というわけで、基本的にはどのメーカーも(?)CBRかRAS-onlyリフレッシュするとテストモードを抜けるようです。
なので、R800がDRAMにアクセスする前(リセット中)に、強制的にリフレッシュをしてあげれば、テストモードから抜け出すことができます。
では、ここでなるべく簡単にその回路を追加する方法を考えてみます。


クリックで拡大
A1GTの回路図ですが、こちらを見るとわかるように、1MByte化で使うIC38/IC39のRASが、R373のダンピング抵抗を介してR800に接続されています。
なので、R373のDRAM側のRASをダイオードを通して/RESETに接続するとこで、とりあえずRESET中はRASがLになり、RAS-onlyリフレッシュサイクルが発行されることになります。
ですが、それだとR800側のRASがリセット中に40mA程度は流れることになり、さすがにこれはまずいです。
※ちなみにR800のUMにはRASはリセット中はHi-Zという記載がありますが、実際にはプッシュプルのH出力のようです。本当にHi-Zになるのであれば、RASにPull-UP等が必要のはずです。
なので、ここのダンピング抵抗をある程度抵抗値の大きいものに変えておきます。1kΩでも安定動作していました。
ここは使用するDRAMにもよるのかもしれません。
以上で、テストモード誤投入からの復帰ができるようになります。
これが本当に対処として正しいのかはわかりませんが、実際のところ対処後は今のところ100%起動しており、効果はあるようです。


感想、要望、バグ報告、その他何かありましたら、メールもしくは掲示板にてご連絡ください。
裕之  
ホームに戻る