Wenn man 8 Bit ROM’s ausliesst und zu einem 16 Bit Image zusammenfügen möchte, steht man vor dem Problem, dass die Daten in falscher Reihenfolge vorhanden sind.
Man hat ein LOW und ein HIGH ROM – das heisst, das die Daten nicht auf den ROM-Chips nacheinander sind, sondern ‚abwechselnd‘ ausgelesen werden müssten.
Ausgelesen hat man aber erstmal zwei Dateien. ROM.low und ROM.high. Das Image müsste aber so aussehen (Zahlen – welches Byte aus der Datei Low oder High) : L1H1L2H2L3H3….
Um daraus nun ein ‚richtiges‘ ROM-Image zu erstellen, welches man benötigt, muss man diese Dateien richtig zusammenfügen. Dafür gibt es Programme, aber unter Linux ist es auch mit Standardtools möglich.
So kann man diese Dateien mit folgendem Script zusammenfügen. Dabei ist darauf zu achten, ob die Architectur „Little Endian“ oder „Big Endian“ ist.
!/bin/sh
bytes=filesize ROM.low
for i in $(seq 0 $bytes)
do
dd skip=$i status=none count=1 bs=1 if=ROM.high >>IMG.img
dd skip=$i status=none count=1 bs=1 if=ROM low >> IMG.img
done
Bei „Little Endian“ wird das niederwertige Byte zuerst gespeichert. Das ist vor allem bei X86 CPU’s der Fall.
680xx CPU’s verwenden „Big Endian“, weswegen da zuerst das höherwertige Byte gesichert werden muss.
Das Script ist so für „Big Endian“ gedacht – für „Little Endian“ müssen die dd Zeilen getauscht werden.
Quelle und Inspiration zum Artikel: Forum Verein zum Erhalt klassischer Computer