Forum: PC-Programmierung Bin-Datei vom Z80 umwandeln in eine Data-Zeile


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 Peter B. (funkheld)


Bewertung
-1 lesenswert
nicht lesenswert
Hallo, guten Tag.
Ich habe eine reine Bin-Datei von einer ASM für den Z80.

Die soll jetzt so umgewandelt werden :
DATA 0000002A01001157001922

Eingelesen wird sie dann so:
READ code$,check$

Das ist dann das umwandeln:
20 Datazeilen werden hier umgewandelt
-----------------------------
1450 FOR i%=1 TO 20
1460 READ code$
1470 FOR j%=1 TO 21 STEP 2
1480 byte%=VAL("&H"+MID$(code$,j%,2))
1490 POKE address%,byte%
1500 address%=address%+1
1510 NEXT
1520 NEXT
-------------------------------

Wie heisst bitte das Umwandelprogramm für die Data.

Danke.
GRuss

: Bearbeitet durch User
von Einer (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Es gibt nicht nur ein BASIC.
Stringkonstanten in data müssen in Anführungszeichen.

Siehe Beispiele
http://www.antonis.de/qbebooks/gwbasman/read.html

von Chregu (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Hex-Editor

von Theor (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Unter dem Stichwort "bin2hex" wirst Du vermutlich ein (fast) passendes 
Programm finden.
Vermutlich wirst Du die Datei mit den Hex-Zahlen noch nachbearbeiten 
müssen; etwa Leerzeichen entfernen.

Beitrag #6381371 wurde von einem Moderator gelöscht.
von Εrnst B. (ernst)


Bewertung
0 lesenswert
nicht lesenswert
Lösung mit Unix-Hausmitteln:
hexdump -v -e '"DATA " 20/1 "%02X" "\n" ' test.bin

ergibt
DATA 68747470733A2F2F7777772E6D696B726F636F6E
DATA 74726F6C6C65722E6E65742F746F7069632F3530
DATA 323131370A0A140A87DBC7CB71E4E38E93CFC7F1
DATA 7E6FEB10DA30C5D77CF763A5141B110EADE42E13
DATA 594676C4AA63641F8045D685378A92D925E5C00A
DATA 8BE4B52425974FB8B70AACE796F36829C39E736D
...

von Yalu X. (yalu) (Moderator)


Bewertung
1 lesenswert
nicht lesenswert
Peter B. schrieb:
> Wie heisst bitte das Umwandelprogramm für die Data.

Es heißt PETERSDATAUMWANDELPROGRAMM.BAS ;-)

Exakt das von dir Gesuchte (mit Zeilennummer, DATA-Schlüsselwort und
Prüfsumme) gibt es wahrscheinlich noch nicht, aber als erfahrener
Basic-Programmier schreibst du so etwas in wenigen Minuten selber.

von Schlaumaier (Gast)


Bewertung
-3 lesenswert
nicht lesenswert
So was was du suchst nennt man RE-Compiler.

Der Nachteil dieser Teile ist, das sie nur für/(eher gegen)  ein 
speziellen Compiler arbeiten.

Einfach gesagt :  Exe/hex Code erstellt mit QBasic // Re-Compiliert mit 
einen Qbasic Recompiler.

Und um die Sache noch schlimmer zu machen, verschlüsseln Compiler ihren 
Code so das dies nicht /oder kaum möglich ist.  Und Dokumentation wie 
der Compiler arbeitet sind eh Firmengeheimnisse die rückt keine Firma 
raus. Im Gegenteil sie steuern sogar gegen.

Davon abgesehen verstößt dein Vorhaben vermutlich gegen das 
AGB/Urheberrecht . Denn in jeden Lizenzbedingungen die ich bisher 
gelesen habe steht eine Klausel die Re-Compilieren verbietet.

Und das ist auch RICHTIG so. Ich mag es nämlich auch nicht, wenn 
jemand Routinen an den ich ne Woche gearbeitet habe, einfach kopiert 
oder einfach gesagt KLAUT. Das finde ich nämlich schlimmer als wenn er 
das ganze Programm illegal nutzt. Da hätte ich wenigstens noch Werbung 
für mein Werk.

Beitrag #6381433 wurde von einem Moderator gelöscht.
von Schlaumaier (Gast)


Bewertung
-2 lesenswert
nicht lesenswert
Datazeilen sind nix anderen wie DATA(en). Eine Methode mit der man vor 
40 Jahren Hex-Programme die auf Papier gedruckt wurden, in den Comupter 
übertragen wurden. (C=64 Listings waren dafür berühmt)

Wenn er eine reine HEX hat, und die in den Computer POKEN will, macht 
man das nicht mit Data-Zeilen sondern mit ein Serial-Read.  Lese Bytes, 
setze es an Speicherstelle xx, und nehme das nächste.

Data-Zeilen müllen ein Code nur unnütz auf.

Beitrag #6381471 wurde von einem Moderator gelöscht.
Beitrag #6381488 wurde von einem Moderator gelöscht.
von Schlaumaier (Gast)


Bewertung
-2 lesenswert
nicht lesenswert
HuelfreichSeiDerMenschUndGut schrieb im Beitrag #6381471:
> Wo soll denn da "Serial" etwas herkommen.

Peter B. schrieb:
> Ich habe eine reine Bin-Datei von einer ASM für den Z80.

ER hat sie ja.  Und dann ist es ja wohl völlig wurst oder er daraus 
data-Zeilen macht oder sie Serial (d.h. byte für byte) einliest. Was das 
Prg. ja eh macht.

adresse = 16233 'startadresse des Speichers
open "komische_hex.bin" for input #1
Do while not EOF(#1)
  E$ = imput #1,(1) ' liest das nächste Bytes aus den String
  adresse = adresse + 1
  poke addresse, asc(e$)
loop
close #1

Mann ich hab so alten Code schon seit 40 Jahren nicht mehr geschrieben, 
sorry wenn Befehle nicht die richtige Syntax haben, weil das ist uralter 
Basic Code. Das selbe ist aber auch mit VB möglich. Da sind nur die 
Syntax anders.

Davon mal ganz abgesehen. Wenn man den Code oben erweitert , schreibt 
das Programm sogar sich selbst. z.b. so.


data_nr = 0 : Data_text$ = ""
adresse = 16233 'startadresse des Speichers

open "komische_hex.bin" for input #1
open "neues_prg.bas" for output #2

Do while not EOF(#1)
  e$ = imput #1,(1) ' liest das nächste Bytes aus den String
  adresse = adresse + 1
  poke addresse, asc(e$)
  data_nr = data_nr + 1
  if data_nr >8 then
    data_text$ = data_text$ + chr(10)+ chr(13)
    print #2, data_text$
    data_text$  ="DATA " + asc(e$)
  else
    data_text$ = data_text$ "," + asc(e$)
  end if
loop
close #1
close #2

Falls Zeilen-Nr. erwünscht sind, muss man diese noch dazu tun.

Und mit ein paar Zeilen extra, kann man sogar den Bootloader für die 
data-zeilen davor schreiben. ;)

Wieso muss man die Welt immer so kompliziert machen.

von Peter B. (funkheld)


Bewertung
0 lesenswert
nicht lesenswert
Danke für die Hilfe.

Ich habe mal etwas in Basic programmiert aus den Befehlen die ich oben 
gesehen habe mit Open...
Ein Teil funktioniert schon.

Gruss

von NichtZuFassen (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Peter B. schrieb:
> Danke für die Hilfe.
>
> Ich habe mal etwas in Basic programmiert aus den Befehlen die ich oben
> gesehen habe mit Open...
> Ein Teil funktioniert schon.
>
> Gruss

ja zeig halt mal her, vielleicht taugt's was und noch jemand kann's 
gebrauchen

von Schlaumaier (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Peter B. schrieb:
> Danke für die Hilfe.
>
> Ich habe mal etwas in Basic programmiert aus den Befehlen die ich oben
> gesehen habe mit Open...
> Ein Teil funktioniert schon.
>
> Gruss

Freut mich das der Code dir hilft. Du musst ihn natürlich auf das 
Basic-System was du benutzt anpassen. Wenn du ihn in Visual-Basic 
schreibst ist die Anpassung etwas schwerer. Aber auch nicht wirklich ein 
Problem.

Der Code von mir ist eher QBasic. Also uralter Stil. Fakt ist aber, 
abgepasst funktioniert er in jeden Code-System was Festplattenzugriff 
hat.

Sag mal dein Entwicklungs-System.

von Joachim B. (jar)


Bewertung
0 lesenswert
nicht lesenswert
Theor schrieb:
> Vermutlich wirst Du die Datei mit den Hex-Zahlen noch nachbearbeiten
> müssen; etwa Leerzeichen entfernen.

oder ", 0x" einsetzen müssen

je nach dem

http://www.byteme.org.uk/2014/02/07/a-z80-assembler-in-c-with-ide/

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.