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
Es gibt nicht nur ein BASIC. Stringkonstanten in data müssen in Anführungszeichen. Siehe Beispiele http://www.antonis.de/qbebooks/gwbasman/read.html
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.
Lösung mit Unix-Hausmitteln:
1 | hexdump -v -e '"DATA " 20/1 "%02X" "\n" ' test.bin |
ergibt
1 | DATA 68747470733A2F2F7777772E6D696B726F636F6E |
2 | DATA 74726F6C6C65722E6E65742F746F7069632F3530 |
3 | DATA 323131370A0A140A87DBC7CB71E4E38E93CFC7F1 |
4 | DATA 7E6FEB10DA30C5D77CF763A5141B110EADE42E13 |
5 | DATA 594676C4AA63641F8045D685378A92D925E5C00A |
6 | DATA 8BE4B52425974FB8B70AACE796F36829C39E736D |
7 | ... |
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.
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.
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.
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.
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
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
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.
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/
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.