Dekompiler gesucht für C oder C++

beckenrandschwi

Commander
Registriert
Aug. 2004
Beiträge
2.260
Hallo,

ich bin auf der Suche nach einem Dekompiler für C oder C++.
Hintergrund: ich habe auf einem alten Controller einen 4k EPROM, welcher mit ca. 2k Daten voll ist.
Ich würde jetzt gern zwei/drei Parameter ändern. Dazu würde ich gern den Inhalt als C oder C++ oder Turbo Pascal, ect. Code Dekompilieren, den Parameter ändern und wieder komplieren und auf das EPROM schreiben.

Der Controller ist ein ISA 8 bit MFM Controller von 1984. Leider unterstützt er nur Typ 1 Platten. Ich habe gelesen, dass im EPROM die Plattenparameter abgelegt sind. Diese würde ich gern ändern (306 zu 615; 305 zu 618; 128 zu 320)
Eprom löschen/ neu Beschreiben ist kein Problem. Eprom ist auch schon ausgelesen.

Vielen Dank für Anregungen
 
Du bist vielleicht besser beraten wenn du versuchst die Parameter per Hex-Editor zu modifizieren.
Ansonsten findet sich ja auch einiges auf Google, kam von denen keiner in Frage?
 
Ich kann dir garantieren daß die Firmware in dem Controller nicht mit C programmiert wurde.Und das dekompilieren und dann wieder neu kompilieren geht nichtmal mit allerneuestem Code bzw. Compiler. Mit so altem: vergiss es.

Was für ein ISA hat denn der Controller (nicht ISA Bus sondern Befehlssatz...) ?
 
Ich weiß nicht mit was er Compiliert wurde, aber für C/C++ gibt es keinen ordentlichen Decompiler. Man bekommt zwar ein paar Informationen, aber compilieren lässt sich das hinten und vorne nicht.

Ich würde es mal mit einem Debugger versuchen (OllyDbg 1.1).
 
Hey, danke schon mal für die Antworten.
Da war ich wohl etwas optimistisch. Mit Software kenne ich mich so sehr nicht aus. Dachte es gibt mittlerweile gute Dekompilierer.
Anbei auch die Binärdatei. Hmm, wie kann ich hier ".bin" Dateien hoch laden? Ahh, gezippt :)
Anhang anzeigen mfm wd1002-wx2.zip

Was meinst du mit ISA, wenn nicht den ISA BUS?

Der MFM Controller ist dieser hier: Western Digital DW1002-WX2. ISA 8 bit für den XT.
31262.jpg

Hier steht auch was:http://www.vintage-computer.com/vcf...tion-on-wd1002-wx2-8-bit-hard-disk-controller
"The drive parameters are stored in a table near the beginning of the ROM. If you want to use a different model of drive, you have to change the ROM."

Ich würde an diesem Controller gern eine Seagate ST-221 betreiben (Typ2)

Grüße

Beckenrandschwimmer
 
Zuletzt bearbeitet:
Du brauchst keinen Dekompiler sondern einen Hex-Editor z.B.

HxD

Du kannst auch die "portable Version" (Link auf der Seite) nehmen, dann musst Du nichts installieren.

Wenn Du Dein bin-File damit öffnest siehst Du ungefähr sowas

Code:
Offset(h) 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F

00000000  55 AA 10 EB 7C E9 18 05 28 43 29 20 43 6F 70 79  Uª.ë|é..(C) Copy
00000010  72 69 67 68 74 20 31 39 38 34 20 57 45 53 54 45  right 1984 WESTE
00000020  52 4E 20 44 49 47 49 54 41 4C 20 43 6F 72 70 6F  RN DIGITAL Corpo
00000030  72 61 74 69 6F 6E CF 02 25 02 08 2A FF 50 F6 19  rationÏ.%..*ÿPö.
00000040  04 32 01 02 32 01 00 00 0B 00 00 00 00 00 00 00  .2..2...........
00000050  00 77 01 08 77 01 00 00 0B 05 00 00 00 00 00 00  .w..w...........
00000060  00 32 01 06 80 00 00 01 0B 05 00 00 00 00 00 00  .2..€...........
00000070  00 32 01 04 32 01 00 00 0B 05 00 00 00 00 00 00  .2..2...........

Nach dem zu urteilen was in Deiner oben verlinkten Seite

http://www.vintage-computer.com/vcf...tion-on-wd1002-wx2-8-bit-hard-disk-controller

steht sind die zu ändernden Werte vermutlich ab Ofsset 44hex ( 32 01 hex = 306 dezimal) und Offset 64hex (80 00 hex = 128 dezimal) und evtl. Offset 74hex ( 32 01 hex = 306 dezimal) (Deine 305 +1) zu finden.

ACHTUNG: Ich übernehme KEINE Verantwortung, daß die Offsets und Werte richtig sind!!! Du riskierst bei einer falschen Einstellung, daß im schlimmsten Falle Deine Hardware und Daten für immer unwiederbringlich verloren gehen!!!

Ich würde Dir also dringend raten wegen der Offsets und den zu ändernden Werten den User "Chuck(G)" auf der verlinkten Seite zu kontaktieren.


HTH

BigNum
 
Hallo BigNum,

Vielen Dank für deine Antwort.
Das sieht doch schon gut aus. Was ich jetzt gelernt habe ist: es kommt immer LO-Byte und dann HI-Byte?
32 01 hex ist dann also 132h und das ist dann 306 dezimal?
Das sieht doch schon mal sehr gut aus.

615d wäre dann 267h, also 67 02 hex.
Den im Vintage Forum zu fragen ist ne gute Idee. Ich berichte dann weiter.

Und ausprobieren würde ich es an einer defekten MFM Platte welche die selben Parameter hat, wie das "Ziellaufwerk" (festklebende Köpfe, dreht sich nur mit nem externen Schubs an, läuft dann aber weitestgehend Fehlerfrei. Dank außen liegenden Motor geht das auch ganz gut)
Und beim LL-Format sind eh alle Daten weg ;)

Grüße

Beckenrandschwimmer
 
Es gibt Neugigkeiten.
Durch das angehängte Bild bin ich weiter gekommen. Es sind im ROM Festplattenparameter für 4 verschiedene Festplattentypen hinterlegt und vorbereitet, um durch Jumper konfiguriert zu werden, wenn auch keine Jumper auf dem Board zu finden sind.
Da keine Jumper verbaut sind (auf dem PCB auch nicht vorgesehen oder durch Lötbrücken fest verdrahtet) sieht der Controller 2 mal HI, also Plattentyp 3 (0...3).
Von 71h zu 77h stehen dann die Plattenparameter.
So habe ich eine Tabelle mit den neuen Parametern erstellt, siehe Anhang.
Das wird der nächste Test.
 

Anhänge

Zurück
Oben