Hier die ersten Versuche/Schritte, das ROM 2.7 einer Sun 3/50 zu disassemblieren - Mitarbeit willkommen!
Ich habe wenig Ahnung davon und noch viel weniger Kenntnisse!
Die Schwierigkeiten sind Daten von Instruktionen zu separieren.
Die Sun3/50 nutzt eine 68020 CPU.
Ziele:
Mal sehen, wie man ein ROM Disassemblieren kann.
Ggf. das ROM etwas besser verstehen und sehen was da wann und wie passiert.
Adressen der Zeichenausgabe und Eingaberoutinen ermitteln um ein kleines Asm Testprogramm zu erstellen (Hello World für Boot Prom).
etc. pp.
Ich habe den m68kdis von hier genutzt unter Debian 11:
https://raine.1emulation.com/download/dev.html
Gibt es auch hier:
https://github.com/cr1901/m68kdis
Lt Dokument: Sun-3_Customer_Maintenance_Training_Sep88.pdf - Seite 14 liegt das Boot-Rom an 0x100000. Deshalb habe ich diesen PC Offset genutzt:
1. Zuerst PC Liste erzeugen mit Daten (-020 = 68020; -pc = PC Offset):
m68kdis -020 -pc 0x100000 sun3-50-2.7.rom
Erzeugt sun3-50-2.7.rom.s
2. Mit ghex mir das ROM angesehen. An 0x10b970 beginnt Text/Daten (ab 0x10e42d-0x10fffd = 0xff = leer)
3. Mit VI alle Zeilen aus sun3-50-2.7.rom.s gelöscht, bis Adresse 0x10b970 (9000DD + nnDD...) und als sun3-data.txt gespeichert.
4. Mit awk die erste Spalte = PC Adresse gefiltert und 0x vorgestellt:
awk '{print "0x"$1}' sun3-data.txt > sun3-data.lst
5. Neuer Disassembler Lauf:
m68kdis -020 -pc 0x100000 -n sun3-data.lst sun3-50-2.7.rom
Ergebnisse im anhängenden Zip.
---
Evtl. machen ich noch etwas falsch? Was könnte man noch verbessern?
Wie kann ich Adresse = Labels zuordnen?
---
VG Peter