2012年1月22日の日記を表示中
2012年 1月22日 (日)
■SDI
頼まれていた電池切れのSYSTEM16AのSDIの復活にチャレンジしてみました。
やることはシンプルです。SDIのプログラムを、MAMEを使ってコード空間用のキーとデータ空間用のキーで復号した後、それらを適宜マージするだけ。ムーンウォーカーと同様に、SDIでもディスプレースメント付きPC相対でアクセスされるコード空間の領域はないようなので、逆アセンブル結果と16進数の並びを見るだけで、割と簡単にどっちか判別が可能です。
とは言え、ムーンウォーカーみたいなコード空間とデータ空間の境目の目印はないようなので、境界部分の判別はそれなりに慎重にやらないとまずい感じですが。後、なぜかdis.xが andi.b の一部を未定義命令として扱ったり、セグメンテーションフォルトで落ちたりするのが辛いところ。何が悪いんだ?
まあそんなこんなで、ぐだぐだになりながらもどうにかイメージが出来上がり、MAME上で動いたので、実際にROMに焼いて実機でテストしてみました。27256がないから27C512使うか。
お、動いた動いた。
ふぅ、今回は一発で終了か・・・と思いきや、テストモードに入ろうとするとリセットがかかる問題があることが判明。原因は境界付近で本来コード空間の部分をデータ空間として処理してしまっていたことにありました。うーむ、後でもう1回見直しだなー。それから27256たくさん買わないとw
2012年1月22日の日記を表示中
[コメントを書く]