11/11/29 22:28:15.09
>>944
ツール系は他の詳しそうな人に任せる。
944の望むモノは理解できたので、以下、経験談。
ファミリーベーシックは、V2もV3も、プログラムROMは32Kバイトで
&H8000~&HFFFFにプログラムROMがマップされる、というところはおk?
その最終部分、&HFFFA~&HFFFFまでの6バイトに、
NMIとリセットとIRQの割り込みベクタがリトルエンディアンで書き込まれている。
よって、ここに記載されているアドレスを起点にして順にたどれば、
データを間違ってディスアセンブルする、という現象はひとまず回避できる。
次に、他の人も描いている通り、6502は非常にややこしい間接アドレッシングがあって、
ジャンプ先アドレスがリトルエンディアンで2バイトずつ、ずらずら並んでいるところがある。
ここも、それらを検知したうえで、それぞれ基点として逆アセンブルしなければならない。
(V3.0の場合は5箇所ぐらいみつかった)
あと、非常にトリッキーなアセンブルをしている箇所が、少なくともV3.0には数箇所あった。
それは、オペコードではなく「オペランドのアドレスに向かってジャンプ(またはブランチ)する」というもの。
これによって、通常の逆アセンブルをやっていては絶対に通らない部分がある。
(つづく)