Group Coded Recording

Group Coded Recording (Gruppenkodierte Aufzeichnung oder Gruppenwechselschrift,[1][2] kurz: GCR) bezeichnet ein Aufzeichnungsverfahren für magnetische Datenträger wie Magnetbänder oder Disketten. Bei diesem Verfahren wird ein Daten-Byte mit zehn oder mehr Bit so kodiert, dass nie mehr als zwei Null-Bits aufeinanderfolgen. Eins-Bits werden durch einen Polaritätswechsel der magnetischen Datenträgeroberfläche dargestellt, Null-Bits durch keinen Polaritätswechsel innerhalb einer bestimmten Zeitperiode. Durch das Auftreten von Eins-Bits nach spätestens zwei Null-Bits erfolgt eine ständige Synchronisierung der Lese-Elektronik. Dies ist nötig, da bei längeren Folgen von Null-Bits (d. h., bei mehr als zwei aufeinanderfolgenden Nullen) wegen der immer vorhandenen leichten Schwankungen der Drehgeschwindigkeit die genaue Anzahl der vorhandenen Null-Bits nicht mehr sicher festgestellt werden könnte.[3]

Zum Einsatz kam das GCR-Verfahren z. B. in 5¼"-Diskettenlaufwerken von Commodore (siehe auch CBM-Diskettenlaufwerke) und Apple, wobei es diverse leicht unterschiedliche Varianten des GCR-Verfahrens gibt. Daher sind Commodore- und Apple-Disketten nicht untereinander austauschbar.

Commodore-GCR

Bei Commodore gab es die zusätzliche Bedingung, dass nicht mehr als acht Eins-Bits aufeinander folgen dürfen, da eine solche Aneinanderreihung als Sektor-Startmarke (SYNC) fehlinterpretiert würde. Es wurde jeweils ein Nibble (vier Bit) in fünf Bit kodiert. Daraus ergibt sich, dass immer vier Bytes in fünf Bytes umkodiert wurden. Die Tabelle für Commodores GCR-Kodierung sieht folgendermaßen aus (links die Nutzdaten, rechts der dafür auf die Diskette geschriebene Code):

Daten Code
0000 01010
0001 01011
0010 10010
0011 10011
0100 01110
0101 01111
0110 10110
0111 10111
Daten Code
1000 01001
1001 11001
1010 11010
1011 11011
1100 01101
1101 11101
1110 11110
1111 10101

Mit dieser Kodierung ist sichergestellt, dass nie mehr als zwei Null-Bits oder mehr als acht Eins-Bits hintereinander auftreten.[4]

Apple-GCR

Bei Apple gab es keine Beschränkung der Anzahl der Eins-Bits, die aufeinander folgen dürfen, da dort andere Sektor-Startmarken verwendet wurden. Dafür gab es andere Zusatzbedingungen: Jedes Byte muss mit einem Eins-Bit beginnen, und in den übrigen sieben Bits müssen mindestens ein Paar aufeinander folgende Eins-Bits und nicht mehr als ein Paar aufeinander folgende Null-Bits vorkommen (in einer frühen Codevariante, die bei Apple nur in den Betriebssystemen Apple DOS 3.1 und 3.2 von 1978 bis 1980 benutzt wurde, waren gar keine aufeinander folgenden Null-Bits erlaubt). Letztlich wurden bei Apple-GCR (in der 1980er-Variante, eingeführt mit Apple DOS 3.3 und auf dem Macintosh noch bis in die 1990er Jahre verwendet) jeweils sechs Bits in acht Bits umkodiert, wodurch der Code insgesamt etwa sechs Prozent weniger effizient war als Commodore-GCR, jedoch war zugleich der Hardware-Aufwand deutlich geringer. Die 1978er-Variante kodierte nur fünf Bits in acht Bits um und war damit nochmals deutlich weniger effizient. Die Codetabelle für Apple-GCR in der 1980er-Variante sieht so aus:

Daten Code
000000 10010110
000001 10010111
000010 10011010
000011 10011011
000100 10011101
000101 10011110
000110 10011111
000111 10100110
Daten Code
001000 10100111
001001 10101011
001010 10101100
001011 10101101
001100 10101110
001101 10101111
001110 10110010
001111 10110011
Daten Code
010000 10110100
010001 10110101
010010 10110110
010011 10110111
010100 10111001
010101 10111010
010110 10111011
010111 10111100
Daten Code
011000 10111101
011001 10111110
011010 10111111
011011 11001011
011100 11001101
011101 11001110
011110 11001111
011111 11010011
Daten Code
100000 11010110
100001 11010111
100010 11011001
100011 11011010
100100 11011011
100101 11011100
100110 11011101
100111 11011110
Daten Code
101000 11011111
101001 11100101
101010 11100110
101011 11100111
101100 11101001
101101 11101010
101110 11101011
101111 11101100
Daten Code
110000 11101101
110001 11101110
110010 11101111
110011 11110010
110100 11110011
110101 11110100
110110 11110101
110111 11110110
Daten Code
111000 11110111
111001 11111001
111010 11111010
111011 11111011
111100 11111100
111101 11111101
111110 11111110
111111 11111111

Andere Systeme

Bei IBM-PCs wurde stattdessen Modified Frequency Modulation (MFM) benutzt. Die MFM-Codierung und -Decodierung wird in PCs per Hardware, im Floppy-Controller des Chipsatzes, realisiert und kann daher auch nicht ohne weiteres umgangen werden. Mit Hilfe spezieller Controller wie dem Catweasel-Controller oder KryoFlux ist es aber auch PC-Diskettenlaufwerken möglich, GCR-kodierte Commodore- und Apple-Disketten zu lesen und auch zu schreiben.

Es gibt allerdings auch Software (z. B. „Disk2FDI“), die zumindest das Lesen von GCR-Disketten und anderen nicht-PC-Formaten in normalen PCs durch ausgeklügelte Tricks mittels zweier gekoppelter Diskettenlaufwerke ermöglicht, sofern denn das Mainboard des PC auch zwei Diskettenlaufwerke unterstützt (was bei den allermeisten neueren Boards nicht mehr der Fall ist). Das Schreiben von GCR-Disketten ist aber nach bisherigem Kenntnisstand für PC-Laufwerke an gewöhnlichen PC-Diskettencontrollern auch mit Tricks nicht möglich.

Einzelnachweise

  1. Karsten Schramm: Die Floppy 1570/1571. Markt & Technik Verlag AG, 10.2.1 Das GCR-Format.
  2. https://www.online.uni-marburg.de/hrz/chronik/quellen/sperry-univac-magnetbandsystem-uniservo-30-1983.pdf
  3. Karsten Schramm: Die Floppy 1570/1571. Markt & Technik Verlag AG, 10.2.1.1 Das Ausgleichen von Laufwerksschwankungen unter GCR.
  4. Karsten Schramm: Die Floppy 1570/1571. Markt & Technik Verlag AG, 10.2.1.3 Die GCR-Codierung.