概要

10年以上昔の PC マザーボードの bios として W29C020 がよく載っていますが、 flash memory cartridge に使いづらい仕様があります。

write 信号に対する問題

W29C020 では write 信号のあとに toggle bit などの状態出力を行います。計測機器がないため、詳細は不明ですが 1 回の write であっても状態出力モードに入ってしまうようです。

データシートのそれらしい値をみると、 write cycle (erase and program) の max 10 mS がそれに相当しそうです。

このためバンク切り替えのための write 信号のあとにデータを正しく出力してくれません。具体的には unagi/kazzo の dump mode でバンク切り替え直後のデータは 0xff になっていることが多いです。

対策

CPU/Program ROM として使う場合

実機動作時には頻繁に起きるバンク切り替えのため、 /WE 端子をそのままにすると実機では動きません。

プログラム書き込み時には /WE 端子に CPU R/W を接続し、実機動作時には +5V を接続する... と動きますがスイッチの加工などが必要で不便です。

PPU/Charcter ROM として使う場合

実機動作時には Charcter ROM 領域に write 信号が入ることはバグかプロテクトの意味で RAM になってるかチェックするぐらいです。また、Charcter ROM の出力がおかしくなっても、プログラムがとまることはありません。

コマンドアドレスが A14-A0 タイプなので後期マッパのようにバンクが4つ以上あるものに使用可能です。

あきらめて交換する

残念ながら W29C020 は flash memory cartridge として使いづらいのですが ... 捨てないでください。27C020 と同じピン配置なので他に 27C020/27C010 として使ってるメモリデバイスと交換できます。

読者が使わなくても na6ko がその目的で使いますので、メールをいただけば AM29F040B と等価交換したいと思います。現在(2010.01.16)、在庫が尽きていますが、在庫が復活次第、受け付ける予定です。

W29C040 について

容量増加版の W29C040 ではこの問題が起きず、安定した動作と高速な書き込みをサポートしており flash memory cartridge において大変優秀です。