Zitat von detlefDeswegen verwende ich auch meinen eigenen Disassembler - eigentlich mehr ein Unassembler, der versucht assemblierbaren Quelltext zu erzeugen.
Wobei der jetzt nicht versucht, Datenbereiche automatisch zu erkennen. Aber er liest ein Config-File, wo ich die Datenbereiche vorgeben kann.
Nach mehreren Durchläufen sind die Datenbereiche dann identifiziert (anhand illegaler Opcodes und merkwürdiger Labels).
Diese Vorgehensweise wird wohl für die von dir genannte "Haupt"-Problemstellung, sprich Rekonstuktion eines Sourcecodes für einen nicht zu verschiebenden (da binär identischen) Objektcode ausreichen.
Wenn ich mich da dransetze, ist der Source anschließend voll verschiebbar. Und im aktuellen Fall war das Neuzuweisen der verwendeten Datenbereiche gleich noch mal ein nettes Extra - das fällt so eben nur an, wenn man auf eine andere Maschine portiert, welche die Zeropage und den anschließenden OS Workspace anders nutzt.
Die Trennung von Code und Daten ist da nur der erste Schritt. Das muß man für jeden Objektcode aber ohnehin nur einmal machen und für mich gibt's da zu viele bekannte Fallstricke als daß ich das einem Programm überlasse ...