Hallo Besucher, der Thread wurde 10k mal aufgerufen und enthält 25 Antworten

letzter Beitrag von greg64 am

Eprom Hexxer - Eprom Tool (auch ByteSwap)

  • Hallo Leute,


    nachdem ich mich ja vor kurzem ins Eprom brennen vorgewagt habe, suchte ich - nach einer gewissen Zeit - auch einen Weg um Byte swapping zu machen. Zum Beispiel um meine ausgelesenen Kickstarts in eine lesbare Form zu bringen 8| (Hab mehrere orginale Kickstart Chips hier).


    Natürlich mag es auch in der Kommandozeile funktionieren, aber ich hab mich mal hingesetzt ein Tool geschrieben :f5: das beim Arbeiten mit Eproms recht nützlich ist (Windows x32).
    Es ist definitiv nicht nur für Amiga Kickstarts sondern genauso für C64 und andere binaries nützlich und gedacht!
    Zum Beispiel kann man damit kinderleicht zwei binaries aneinanderhängen oder eines verdoppeln.


    Was kann es:
    - .bin einlesen per Drag and Drop
    - abspeichern per Save button unter neuem Namen
    - checkbox add: eine weitere Datei (Drag&Drop) wird zum Buffer hinzugefügt
    - Anzeige der eingelesen Daten in einem einfachen Hexviewer (Byte-Breite der Zeilen einstellbar)
    - Bytes paarweise vertauschen ABCD -> BADC
    - Bytes viererweise vertauschen ABCD -> DCBA
    - Double: hänge den Buffer nochmal an sich selbst dran
    (Beispiel: Du möchtest ein 16k Game in ein 32k Eprom brennen und es zweimal reinschreiben)
    - Half: Buffer bei der Hälfte abschneiden (zB wenn man 2x dieselben Daten hintereinander im .bin hat)
    - .bin Dateien deren Daten sich bei der Hälfte identisch wiederholen werden erkannt und ein Text eingeblendet
    (zB jenes 16k Spiel das im 32k Eprom liegt)
    - cbm80 Dateien werden erkannt
    kickstart Dateien werden teilweise erkannt
    (Just for fun, könnte man noch optimieren)


    (Mit Buffer ist hier immer die einegelesene Datei gemeint)


    Der Hexviewer zeigt momentan nur die ersten 4k an (aus Performancegründen). Es wäre denkbar dass der Hexviewer auf Wunsch (Button oder Doppelklick oder ähnliches) einen noch grösseren Teil der Daten (oder alles) anzeigt.


    Folgende Features wären noch denkbar/machbar - ob ich sie noch einbaue hängt davon ab wieviel Zeit ich habe und wie sehr sie benötigt werden:


    - Concat Words: mach aus zwei Dateien mit den "even" und "odd words" wieder eine Datei
    - Hash (zb Md5) der Datei berechnen und anzeigen (praktisch wenn man checken will ob Dateien identisch sind)
    - Bytes nochmal anders vertauschen, wenn hier jemand etwas benötigt


    Ich hoffe es ist nützlich.
    Über Feedback und Verbesserungsvorschläge freue ich mich. :)


    PS: Nicht wundern Nightshft ist mein anderer Nick. Das Programm ist von mir.
    Eprom Hexxer by Nightshft Version 1.0 Mai 2018 x86



    EDIT by FXXS: Update aus Posting 5 eingepflegt:
    Update - Version 1k
    - deutlich schnelleres Update des HexView (danke @oobdoo)
    - HexView zeigt jetzt mehr an (bis zu 64kByte). Wenn hier jemand wirklich mehr braucht bitte melden.
    Die Dateien selbst dürfen natürlich (quasi) beliebig gross sein. Hier gehts nur rein um die HexAnzeige.
    - bugfix: die letzte Zeile im Hexview wird jetzt auch korrekt angezeigt wenn sie nicht "voll" ist.

  • Der Hexviewer zeigt momentan nur die ersten 4k an (aus Performancegründen).

    Versuch doch mal vor dem Befüllen der Listbox ein BeginUpdate und danach ein EndUpdate einzufügen.
    Das sollte mehr Speed bringen. Oder mit einem DataGridView arbeiten.

  • Dekay: Ja, hab deinen Thread gekannt. Wollte dir schon eine Nachricht schreiben, aber jetzt hast es eh entdeckt =)

    Versuch doch mal vor dem Befüllen der Listbox ein BeginUpdate und danach ein EndUpdate einzufügen.
    Das sollte mehr Speed bringen. Oder mit einem DataGridView arbeiten.

    Danke für den Tipp. Werd ich mir mal anschauen.

  • Update - Version 1k :)
    - deutlich schnelleres Update des HexView (danke @oobdoo)
    - HexView zeigt jetzt mehr an (bis zu 64kByte). Wenn hier jemand wirklich mehr braucht bitte melden.
    Die Dateien selbst dürfen natürlich (quasi) beliebig gross sein. Hier gehts nur rein um die HexAnzeige.
    - bugfix: die letzte Zeile im Hexview wird jetzt auch korrekt angezeigt wenn sie nicht "voll" ist



    PS: @Admins: Kann ich das erste Posting oben echt nimmer ändern? Mag jemand dieses File oben ins erste Posting "schmeissen"? Oder lassen wir das so hier? Von mir aus auch ok. Thx.

  • Hi Peter-ho,

    sorry erst jetzt gesehen.

    Ja, das Programm ist dafür perfekt geeignet.

    Und mit ByteSwap2 kannst du das .bin in eine lesbare Form bringen, da Amiga und PC ja verschiedene Byte Order (Endianess) haben.

    "A IMAGR MOO" -> " AMIGA ROM"


    LG Stefan


    PS: Wenn du eine "lesbare" Kick Datei hast musst du sie vor dem Schreiben auch swappen (ByteSwap2).

  • Was noch schick wäre, eine Funktion die automatisch das BIN an eine Epromgröße anpasst. Also in der Art, bin geladen, auswählen des Ziel Eproms, beispielsweise 27c512, und das Programm erzeugt automatisch eine x-verdoppelte Bin Datei.

    Geht meiner Meinung nach eigentlich jetzt schon sehr einfach.

    -32kB bin laden (drag&drop). 32kB werden auch schön angezeigt.

    -Double klicken. Fertig.

    eine Grösse von 64kB wird angezeigt. Die Daten im Buffer wurden nochmal an sich selbst angehängt.

    Sieht man auch wenn man im Hexviewer runterscrollt.


    Geht mit einem 16kB bin auch sehr einfach. Einfach 2x auf Double klicken.


    Ich persönlich mag diesen halbautomatischen Modus lieber, weil ich dann weiss was ich tue. Bei den automatischen Geschichten muss man ja oft auch kontrollieren ob das Programm überhaupt macht was man denkt dass es macht :emojiSmiley-06:


    Wenn es einige aber trotzdem haben möchten, könnte ich es evtl. einbauen.

  • Für die größeren Amigas ab 68020 wäre eine split/join Funktion nützlich, um die Kickstarts auf zwei Dateien (High/Low) zu verteilen.

    Hi Tobitt,

    ich hab schon eine Funktion dafür eingebaut. Eprom Hexxer kann "Dissect Words". Das ist genau dieses Split. Also eine .bin Datei in 2 Dateien aufteilen. Byte 0,2,4,... in eine Datei und Byte 1,3,5,... in die andere Datei. Genauso wie man es beim A1200 braucht. Habs auch schon am Amiga getestet.


    Ich nehme an für die anderen 68020+ Amigas braucht man das auch so und keine andere Art der Aufteilung. Vielleicht kann das wer bestätigen.


    Ein "join" ist möglich. Kommt auf die Todo Liste.


    PS: Ich sehe gerade dass ich das oben in der Beschreibung nicht aufgeführt habe:


    Kann ein Mod bitte oben im ersten Post folgende Zeile hinzufügen:

    - Dissect Words = Split: Aufteilen eines Files nach even und odd Bytes, so wie es zB. für die 2 Kickroms eines A1200 benötigt wird.

  • Sorry für die Anfängerfragen. Ich warte derzeit noch auf den TL866... und möchte mich im Vorfeld schon ein wenig schlau machen. :)

    Sind denn .rom und .bin Dateien gleich zu setzen?


    Wenn ja wäre dieser Ablauf richtig?


    Kick31.rom (z.B. für A600 also 1 Chip) einladen, ByteSwap2 ausführen. Geswappte Datei in .bin abspeichern und mit dem TL866 auf ein leeres Eprom schreiben?


    Danke

  • Dateien können die Endung .bin oder .rom besitzen und sind im Allgemeinen gleich zu setzen.


    Je nach Geschmack verwendet der Eine .rom der Andere .bin.

    Lieben Gruß, Torsten


    Meine Spielzeuge
    BFZ MFA, Apple //e, ZX80Core, AX81, ZX81, ZX81NU, Spectrum+, Harlequin, Jupiter ACE Clone, Amstrad NC100, Cambridge Z88, C64, C128D, Plus/4, Amiga 500, Amiga 1200, Atari Portfolio, HP200LX, HP48SX, HP48GX, Accura 101, IBM PC 5155, PS/2 (Model 40SX), TP755c, T20, T41, T61, PS/2E, TI-59,

  • Hallo Peter,


    >Sorry für die Anfängerfragen. Ich warte derzeit noch auf den TL866...

    No Problem. Hab auch vor 1-2 Jahren mit dem TL866 meinen ersten Eprommer gekauft.

    Du weisst dass du für Amiga Kick Eproms noch einen Adapter brauchst?


    >Kick31.rom (z.B. für A600 also 1 Chip) einladen, ByteSwap2 ausführen. Geswappte Datei in .bin abspeichern und mit dem TL866 auf ein leeres Eprom schreiben?


    Ja, der Ablauf ist richtig.

    (Natürlich darfst du nur Kicks schreiben deren Lizenz du hast, bzw. wenn du es selbst von einem deiner Chips ausgelesen hast.)

  • ...Eprom Hexxer kann "Dissect Words". Das ist genau dieses Split. Also eine .bin Datei in 2 Dateien aufteilen. Byte 0,2,4,... in eine Datei und Byte 1,3,5,... in die andere Datei. Genauso wie man es beim A1200 braucht. Habs auch schon am Amiga getestet.

    .....


    Kann ein Mod bitte oben im ersten Post folgende Zeile hinzufügen:

    - Dissect Words = Split: Aufteilen eines Files nach even und odd Words, so wie es zB. für die 2 Kickroms eines A1200 benötigt wird.

    Da hat sich ein Fehler eingeschlichen (ist bei mir auch schon wieder ein Jahr her, dass ich mich damit beschäftigte).

    Die Aufteilung erfolgt nicht byte-wise sondern word-wise. Eine Datei bekommt also die Words 0,2,4 und die andere die Words 1,3,5. Wobei ein Word immer 2 Bytes entspricht. Genauso wirds beim A1200 auch benötigt (hab es ja - wie gesagt - getestet).

    Ist mir gerade aufgefallen, weil ich angefangen hab an der Merge Funktion zu schreiben.


    (Technischer Hintergrund: jeder Chip liefert im Betrieb 16bit Daten, der Amiga liest 32bit und immer von beiden Chips gleichzeitig. Deswegen muss die Aufteilung word-wise erfolgen.)

  • Hi,


    Danke für die Unterstützung.

    Ja, ich weiß, dass ich noch einen Adapter benötige. Habe mir einen aus UK besorgt.


    Ich will mich generell mit der Technik beschäftigen.

    Ich besitze eine ganze Amiga Sammlung (500, 500+, 600, 1200, 2000 und 4000)

    Zusätzlich habe ich mir lizensierte Roms gekauft.


    Mir geht es ausschließlich darum, für mich persönlich Sicherheitskopien anzufertigen und generell erfreut es mich einfach, mich mit der Technik zu beschäftigen.

    Gruß

    Peter

  • Hallo Peter,


    ich habe heute bei der Suche nach einem Splitting-Tool für meine Amiga/Kickstart-Experimente, dein

    tolles Tool entdeckt. Wenn ich allerdings ein A1200er oder 400er Image lade bringt er immer Fehler. Sind die Files

    nur zu groß oder bediene ich das Tool falsch.

    Beim Dissect Word kommt z.B.: Buffer length is not multiple of 4 oder beim ByteSwap2 kommt:

    Buffer length is odd. Was mache ich falsch, wollte eigentlich nur das Kickfile in Odd/Even splitten.


    Viele Grüße und vielen Dank, Dirk

  • Hi Dirk,

    ich heisste Stefan, aber Danke für das Kompliment =)

    Sorry für die späte Antwort, habs leider erst jetzt gesehen.

    Welches Kickfile verwendest du und wie lang ist die Datei (in Bytes)?

    Ein Kick mit 512KB sollte zb. 524.288 bytes lang sein. Das sind genau 512x1024 Bytes. Eine gerade Zahl, die auch durch 4 teilbar ist.

    LG Stefan / Nightshft