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
Gast
#6381356
Es gibt nicht nur ein BASIC. Stringkonstanten in data müssen in Anführungszeichen. Siehe Beispiele http://www.antonis.de/qbebooks/gwbasman/read.html
Gast
#6381362
Hex-Editor
Gast
#6381363
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 | |
ergibt
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
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.
Gast
#6381394
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.
Gast
#6381447
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.
Gast
#6381498
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
Gast
#6382783
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
Gast
#6382787
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/
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.