Forum: Compiler & IDEs EDA-Dateien bearbeiten


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Dietmar B. (dragonfly45)


Lesenswert?

Hallo,
ich habe Progarammdateien mit der Endung .EDA. Ich kann diese mit einem 
Texteditor öffnen. Es scheint sich um ein Assemblerlisting im 8080-Code 
zu handeln.

Wie kann ich das in ein Z80-Listing bzw. in eine Z80 Datei umwandeln.

Viel Grüße
Dietmar

: Verschoben durch Moderator
von Oliver S. (oliverso)


Lesenswert?

rename <filename>.eda <filename>.z80

Oder was war die Frage?

Oliver

von Christoph db1uq K. (christoph_kessler)


Lesenswert?

Von Z80 finde ich nichts
1. .eda ist ein Diskimage von Ensoniq/E-MU
"Kopie einer Festplatte für das Ensoniq Advanced Sampling Recorder (ASR) 
digitales Musikproduktionsstudio formatiert"

2. EDA wird für eine Leiterplattensoftware EasyEDA benutzt
"Electronic design automation"

aber Oliver hat recht, umbenennen dürfte das einfachste sein.

von Bradward B. (Firma: Starfleet) (ltjg_boimler)


Lesenswert?

AssenblerListings sind gerne nicht nur Prozessor- sondern auch 
Assemblerabhängig insbesonders bezüglich der Assemblerdirektiven wie 
bspw. .org .def oder .equ . Oder macro-definition, man vgl. bspw. TASM 
und MASM (nicht Z80, 
https://de.wikipedia.org/wiki/Turbo_Assembler#MASM-Modus)

Grad historisch gibt es da viel mehr als GNU. 
https://ftp.gnu.org/old-gnu/Man


> Es scheint sich um ein Assemblerlisting im 8080-Code zu handeln. Wie kann > ich 
das in ein Z80-Listing
Zilog Z80 verwendet trotz Binärkompabilität zum intel 8080 andere 
mnemonics.

https://de.wikipedia.org/wiki/Zilog_Z80#Unterschiede_zum_Intel_8080

: Bearbeitet durch User
von Christoph db1uq K. (christoph_kessler)


Lesenswert?

> ein Assemblerlisting im 8080-Code
ist das ein Quelltext oder das binary, z.B. in Intel-Hex-Format?

> in ein Z80-Listing bzw. in eine Z80 Datei umwandeln
Am einfachsten das binary mit einem Z80-Disassembler ausgeben, die 
Kommentare von Hand aus dem Original-Quelltext dazufügen wenn der 
vorhanden ist.

von Dietmar B. (dragonfly45)


Lesenswert?

Christoph db1uq K. schrieb:
>> ein Assemblerlisting im 8080-Code
> ist das ein Quelltext oder das binary, z.B. in Intel-Hex-Format?
>
>> in ein Z80-Listing bzw. in eine Z80 Datei umwandeln
> Am einfachsten das binary mit einem Z80-Disassembler ausgeben, die
> Kommentare von Hand aus dem Original-Quelltext dazufügen wenn der
> vorhanden ist.

Hallo,
ich denke das es ein Quelltext ist, da ich ihn mit einem Texteditor 
öffnen kann.
Ich würde diese aber gern in einen Z80-Quelltext wandeln.

VG
Dietmar

von Jens K. (jensky)


Lesenswert?

Die Datei hier hochladen ist keine Option?
Andere könnten rein schauen und dir dann sagen was es ist.

von Dietmar B. (dragonfly45)


Angehängte Dateien:

Lesenswert?

Jens K. schrieb:
> Die Datei hier hochladen ist keine Option?
> Andere könnten rein schauen und dir dann sagen was es ist.

Hier mal die Datei als Anhang.

VG
Dietmar

von Bradward B. (Firma: Starfleet) (ltjg_boimler)


Lesenswert?

Folgend ein Code-schnipsel aus der Datei:
1
L1CBA    INC    HL
2
         INC    DE
3
         mov     A,E
4
         OR     D
5
         SCF
6
         RET    Z
7
         PUSH   HL
8
         mov     HL,[D18F8]
9
         XOR    A
10
         SBC    HL,DE
11
         POP    HL
12
         RET
13
14
L1CC5    call    PRINT
15
         db   "1   Programmieren"
16
         db   "   +080
17
         RET
18
;
19
L1CD7    call    PRINT
20
         db   "2   Lesen"
21
         db   "   +080
22
         RET
23
;
24
L1CE1    call    08H
25
         cmp     05F
26
         RET    Z
27
         cmp     07F
28
         RET    Z
29
         cmp     05A
30
         jmp     Z,L1CF9
31
         cmp     051
32
         RET    NZ
33
         POP    HL
34
         RET

Wegen der Regesiterbezeichnung "HL" und dem "mov" statt "LD" könnte man 
auf 8080 mnemonics tippen.

* 
http://popolony2k.com.br/xtras/programming/asm/nemesis-lonestar/8080-z80-instruction-set.html

Die könnte man mit search/replace (bspw. per sed) in Zilog Z80 mnemonics 
umwandeln. Wegen dem Autorennamen ("Ludwig/J.Beisler) könnten man auf 
einen programmer für den Amateurcomputer AC1 tippen.
https://www.robotrontechnik.de/html/forum/thwb/showtopic.php?threadid=21818

Der AC1 hatte eine Z80-Nachbau-CPU:

* http://www.kc85emu.de/scans/fa0489/AC1.htm
* https://hc-ddr.hucki.net/wiki/doku.php/homecomputer/ac1

Also wäre das Listing schon für den Z80.

Die File-extension *.EDA wird wohl auf den Editor-Assembler EDAS*4 
verweisen: http://www.ac1-info.de/literatur/fa_87_01_2.htm

: Bearbeitet durch User
von Jens K. (jensky)


Lesenswert?

Ich vermute (nach Durchsicht der EDA-Datei) da hat jemand ein EPROM-File 
einfach de-assembliert.

Problem:
Wurde da der falsche Kern genutzt, ist das Dekompilat fehlerhaft.

Beitrag #7692533 wurde vom Autor gelöscht.
von Bradward B. (Firma: Starfleet) (ltjg_boimler)


Lesenswert?

Jens K. schrieb:
> Ich vermute (nach Durchsicht der EDA-Datei) da hat jemand ein EPROM-File
> einfach de-assembliert.

Gegen "einfaches" Dis-assembling sprechen:
* die vielen Kommentare
* lesbare db-AsCII
* lesbare CALL Addressen auf Firmware (Monitor)-routinen

Siehe diesen Abschnitt, der wohl Zyklenanzahl und Geschwindigkeit beim 
EEPROM-brennen einstellen könnte:
1
L1B0C    call    PRINT
2
         db   00E
3
         db   "2708Programm.NOR"
4
         db   "MAL/SCHNELL   [N/S"
5
         db   "]:   "
6
         db   002+080
7
         CALL   L1CE1
8
         jmp     Z,L1AD5
9
         mov     HL,00DD3
10
         cmp     04E
11
         jmp     Z,L1B45
12
         cmp     053
13
         jmp     NZ,L1B0C
14
         mov     HL,00047
15
L1B45    mov     [D18F4],HL
16
         call    10H
17
L1B49    call    PRINT


> Problem:
> Wurde da der falsche Kern genutzt, ist das Dekompilat fehlerhaft.


Gibt es für den ursprünglich verwendeten Assembler überhaupt einen 
entsprechenden Dissassembler-Kern? In der verlinkten Doc zum AC1 wird 
erwähnt, das wohl ein anderer Assembler als der von Zilog (der    ZEAP 
2.0 der Firma NAS - Elektronische Halbleiter GmbH) "Vorlage" für den 
U880-Assembler des AC1 war. musste ja in 4k ROM passen.
Das würde die Unterschiede im Syntax erklären.

Manual zum ZEAP 2.0 da: http://www.nascomhomepage.com/pdf/zeap.pdf
Manual zum EADS hier wiederholt: 
http://www.ac1-info.de/literatur/fa_87_01_2.htm

Das Problem des TO könnte jetzt sein, das er den zum Listing passenden 
Assembler nicht hat und es mit einem anderen Z80-Assembler versucht, der 
sich aber am Listing verschluckt und dem eventuell noch ein paar 
Label-definitionen unbekannt sind. Der AC1 ist immerhin über 40 Jahre 
alt.

IMHO wäre Infos vom TO bezüglich der geplanten Verwendung des Listings 
und dessen Ursprung hilfreich. Wahrscheinlich müsste man das Listing 
manuell (Syntax-Anpassungen) an den heuer benutzen Assembler anpassen, 
weil damals kein konverter für sowas entwickelt wurde. Aber auch bei 500 
LoC sollte das nicht übermäßig lange dauern, search and replace ist in 
python schnell geschrieben.

: Bearbeitet durch User
von Christoph db1uq K. (christoph_kessler)


Angehängte Dateien:

Lesenswert?

"Eprommer 2716-27512 V.22 1.4 [c]87/89 E.Ludwig/J.Beisler"
der wird hier besprochen:
https://www.robotrontechnik.de/html/forum/thwb/showtopic.php?threadid=21818&replyto=238522&time=0&pagenum=lastpage

"Hallo Dietmar,
das Programm EPROMMER V1.4 von E.Ludwig/J.Beisler (SCCH) belegt von 
1900h bis 1D77h und läßt sich mit den Kennbuchstaben * starten.
Möchest Du diesen Programm und seine Quellcode (in 8080er Code) haben?
Viele Grüße
Babette"

von Harald K. (kirnbichler)


Lesenswert?

Bradward B. schrieb:
> Gegen "einfaches" Dis-assembling sprechen:

Naja, gerade das Beispiel sieht so aus, als wäre es aus einem --wenn 
auch recht guten-- Disassembler gefallen.

Weder kann ich mir vorstellen, daß jemand die willkürlichen 
Stringkonstantentrennungen so hinschreiben würde, noch, daß jemand diese 
Label verwenden würde, die ja wohl recht eindeutig einfach nur Adressen 
mit einem vorangestellten L sind.

von Christoph db1uq K. (christoph_kessler)


Lesenswert?

Ja das ist eine typische Ausgabe eines "intelligenten" Disassemblers, 
der alle Sprungadressen in Labels umwandelt, und nicht als 
Programmbestandteil zuzuordnende Daten als Bytes mit "db" auflistet. 
Wenn der Disassembler auch noch Adressbereiche des "Betriebssystems" 
kennt, kann es die auch noch zuordnen.
Am Ende hat noch jemand ein paar Kommentare zugefügt.
Das kann man aber durch einen beliebigen Z80-Assembler laufen lassen und 
bekommt dann hoffentlich lauffähigen Code. Der lässt sich dann soweit 
kompatibel auch als 8080-Code disassemblieren, wenn man den besser 
versteht.

: Bearbeitet durch User
Beitrag #7692727 wurde vom Autor gelöscht.
von Leo C. (rapid)


Angehängte Dateien:

Lesenswert?

Hier wäre mal ein Anfang (Ein paar "Suchen und Ersetzen" im Editor). So 
sollte es fast durch einen "herkömmlichen" Z80-Assembler gehen.
1
         ORG    01900
2
;
3
         db   "1   2716   *   2   2732   "
4
         db   "*   3   2764   *   4   271"
5
         db   "28   *   5   -256   *   6   -512"
6
;
7
         db   0,9,18,27,36,45
8
;
9
L1931    ld      A,08F
10
         OUT    (P0A),A
11
L1939    ld      si,01900
Wenn man si durch IX oder IY ersetzt, würde es einen Sinn ergeben.

Und dann fehlt noch das H hinter den meisten Hex-Zahlen, wie in der 
Zeile mit dem Label L1931.

von Thomas Z. (usbman)


Lesenswert?

ich würde das ganze einfach durch einen 8080 Assembler schicken

von Bradward B. (Firma: Starfleet) (ltjg_boimler)


Lesenswert?

Christoph db1uq K. schrieb:
> Ja das ist eine typische Ausgabe eines "intelligenten" Disassemblers,
> der alle Sprungadressen in Labels umwandelt, und nicht als
> Programmbestandteil zuzuordnende Daten als Bytes mit "db" auflistet.
> Wenn der Disassembler auch noch Adressbereiche des "Betriebssystems"
> kennt, kann es die auch noch zuordnen.

OK, soviel "Intelligenz"/"Komfort"/"Kenntnisse" hätt ich bei einem 8 bit 
Dissassembler für den HOME-Computer-Gebrauch nicht erwartet.


> Das kann man aber durch einen beliebigen Z80-Assembler laufen lassen und
> bekommt dann hoffentlich lauffähigen Code.

Da der 8080 Code binärkompatibel zum Z80 ist, könnte man doch auch das 
Ganze ohne den Schleife HEX -> Dissassembler -> Assembler -> HEX laufen 
lassen ?!
Außer, man will den Code auf eine Maschine mit anderem Memory-Space, 
Einsprungaddressen zur Firmware/Betriebssystem bringen.

Eventuell hat es auch nie gut dokumentierten Quell-code im heutigen 
Sinne gegeben. Wenn so ein Editor nur wenige k RAM für den Text zur 
Verfügung hat, dann kann er eben nur wenige Zeilen (bspweilsweise (25 
Zeilen a 40 Zeichen = 1k) speichern und muesste immer wieder vom 
externen Speichermedium nachladen. Aber nicht jedem Amateur Rechner 
stand ne Floppy oder wenigstens ein Tape zur Seite. Und auf einem Tape 
immer zum richtigen Abschnitt spulen ... Da der Maschinencode 
einigermassen logisch strukturiert ist: da die bits für den OPcode, dort 
die Bits für die registeradressierung...
https://media.bizj.us/view/img/2667281/howtostevewozniak.jpg

Programme wurden auch gern als reines Hex-Listing zum Abtippen 
verbreitet, manche "Helden" assemblierten ihren Code per Hand auf 
Karo-Papier.
Anpassung (Hacks/Cheats) wurden direkt im bin-Image appliziert.
https://youtu.be/NhjvJhJMprY?t=204

Wenn man da heuer Sources in einer komfortablen Versionsverwaltung haben 
will (in der man bspw. die Unterschiede zwischen 1.3 und 1.4 schnell 
erkennt) bleibt halt nur reverse Engineering mit "händischen" 
Aufhübschen. Oder ist ChatGPT inzwischen af Niveau "Computerkid der 
80er" angekommen

: Bearbeitet durch User
von Dietmar B. (dragonfly45)


Lesenswert?

Hallo,
ich habe zu dem Listing schon die fertige .Z80 Datei. Mir ging es darum 
das ich eine .E80 Assemblerdatei generieren kann die ich dann im EDAS4 
(Editor,Assembler für Z80)generieren kann. Da ich im programmieren noch 
Anfänger bin, verstehe ich die Assemblerlistings für Z80 besser.

Vielen Dank für eure Ausführungen.

Welchen Assembler kann ich denn für die 8080-Datei verwenden?

VG
Dietmar

: Bearbeitet durch User
von Christoph db1uq K. (christoph_kessler)


Lesenswert?

Soweit ich weiß, hat 8080 einen Teilbereich der Z80-Befehle. Also kann 
man ein 8080-Programm auch auf dem Z80 ausführen, aber nicht unbedingt 
umgekehrt.
Ich habe nur einmal ein Z80-Assemblerprogramm geschrieben, Ende der 70er 
auf dem TRS80 von Radio Shack / Tandy. Den hatten wir in der Uni KA.

Das Programm scheint laut Robotron-Forum für den AC1 zu sein
https://de.wikipedia.org/wiki/AC1
"auf dem Prozessor U880 basiert"

https://de.wikipedia.org/wiki/MME_U880
"Der U880 ist ein nicht lizenzierter Nachbau des Prozessors Zilog Z80. 
Die Unterschiede zum Zilog Z80 beschränken sich auf spezielle Details 
wie ein nicht gesetztes Carry-Flag bei dem OUTI-Befehl."

Also sollte das eine echte Z80-Datei sein.

Das Unterprogramm CALL PRINT ist ein alter Trick, der Text steht 
unmittelbar dahinter als .db Daten. Das Unterprogramm (an Adresse "18") 
scheint die Rücksprungadresse ins Hauptprogramm passend zu 
inkrementieren, damit es nach dem Text weiterläuft.

: Bearbeitet durch User
von Thomas Z. (usbman)


Lesenswert?

Dietmar B. schrieb:
> Welchen Assembler kann ich denn für die 8080-Datei verwenden?

https://www.ticalc.org/archives/files/fileinfo/250/25051.html

Der kann auch mit dem 8080 umgehen. Es ist eine 32 Bit App kann also 
direkt unter Win auf der Komandozeile aufgerufen werden.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.