IREM G-101 カートリッジの flash 化につまる

久しぶりにkazzoとロジアナにつないで計測した。

CPU READ,WRITE

まず重要なのが kazzo から供給するROMSEL と G-101 から供給する Program ROM EN での read と write の挙動。

READ では ROMSEL と EN が同時に L になっているので、問題なし。

WRITE では EN のみが H になっているのでバス衝突は発生しない。本物のハードでは PHI2 が L の場合、 ROMSEL が H になるべきだが、わざとずらしてやっているので問題なし。

CPU program

erase のときの波形. data は 0xaa, 0x55, 0x80, 0xaa, 0x55, 0x10 と遷移していって制御線はだいたい同じ形。

EN# が write 時に H になっているのが、問題は ROMSEL が L にならないことだ。昨日の計測では100回に1回ぐらいは期待通りに ROMSEL が L になることがあるが、毎回起きないと正常動作ではない。

パーマン part2 につかっている基板はカードエッジの ROMSEL と G-101 の間に RC 回路(ローパスフィルタ, R=147ohm(実測), C=220pF)が入っていてどうも ROMSEL の有効期間を調整している感じだった。メジャーリーグの基板は C だけがあるのでよくわからん。
フィルタの入出力で同時に計測したが、600ns ぐらいのパルスではちょっと遅れるぐらいで大した物ではない気がした。

flash の CE は当初 G-101 と同じにしてたが、直結にしたり、ROMSEL のパルスを遅らせてみたが大した効果はなかった。詰んだ。

PPU write


こちらはフィルタや ROM コントローラを介さないので単純で想定通りに動いていることも計測で確認した。そうならどうして動かないのかがまったくわからん。

実のところ flash 化は優先度は低い

メジャーリーグの nametable mirroring が何故固定なのかとか、$9000 のレジスタの挙動を調べることがエミュレーションの向上につながるわけで、flash 化をしなくても手段は一応あるんだが、メジャーリーグパーマン part2 の基板で動かすとなるとまた一手間かかる。

だれかヒントを教えてください。