|
Hauptseite - Welches System? - Hardware - Software - Emulatoren - |
Internet MausNet Programmieren Verweise Über |
Das .MSA Diskettenimage enthält die Spuren einer Diskette in komprimierter Form. Es werden bei einer zweiseitigen Diskette abwechselnd die Spuren der ersten und der zweiten Seite gespeichert. Leere Spuren am Ende (oder Anfang) der Diskette können weggelassen werden. Dies entspricht damit der Reihenfolge der logischen Sektornummern.
Ein .MSA Diskettenimage beginnt mit dem folgenden Header:
Word | Magic Word, hat den Wert $0E0F |
Word | Sektoren pro Spur |
Word | Seiten - 1 (0 für einseitig, 1 für zweiseitig) |
Word | startet mit Spur (0 = erste Spur der Diskette) |
Word | endet mit Spur |
Daran schließen sich die einzelnen Spuren an. Es werden immer abwechselnd die Spuren der der einzelnen Seiten gespeichert werden. Eine zweiseitige Diskette wird damit wie folgt gespeichert:
SPUR 0, SEITE 0 SPUR 0, SEITE 1 SPUR 1, SEITE 0 SPUR 1, SEITE 1 SPUR 2, SEITE 0 SPUR 2, SEITE 1 ...
Jede Spur beginnt mit einer Angabe wieviel Bytes folgen:
Word | Data length |
Daran schließen sich die Daten der Spur an.
Ist der Längenwert gleich 512 * "Sektoren pro Spur", ist die Spur unkomprimiert gespeichert. Ist der Längenwert kleiner, handelt es sich um eine komprimierte Spur.
Komprimierte Spuren benutzen eine einfache Lauflängenkomprimierung (RLE - Run Length Encoding). Eine gespeicherte Gruppe wird mit dem Kontrollbyte $E5 eingeleitet. Bytes ungleich dem Kontrollbyte können damit direkt übernommen werden. Das Kontrollbyte leitet die folgende Struktur ein:
Byte | Kontrollbyte $E5 |
Byte | Datenbyte |
Word | Anzahl Wiederholungen des Datenbytes |
Z.B. würden sechs aufeinanderfolgende Bytes mit dem Wert $AA wie folgt kodiert:
$E5AA0006
Wenn das Kontrollbyte selbst in den Daten vorkommt, wird es als eine Gruppe von einem aufeinanderfolgenden Bytes kodiert:
$E5E50001
Da eine gepackte Gruppe aus 4 Bytes besteht, werden erst Gruppen von Bytes gespeichert, die mindestens 4 gleiche Bytes enthalten. Eine Ausnahme ist das Kontrollbyte. Da das Kontrollbyte immer mit einer gepackten Gruppe gespeichert wird, werden auch 2 oder 3 Kontrollbytes durch eine gepackte Gruppe kodiert.
English version not yet available. |