Group coded recording
In-game article clicks load inline without leaving the challenge.
In computer science, group coded recording or group code recording (GCR) refers to several distinct but related encoding methods for representing data on magnetic media. The first, used in 6250bpi magnetic tape since 1973, is an error-correcting code combined with a run-length limited (RLL) encoding scheme, belonging into the group of modulation codes. The others are similar encoding methods used in mainframe hard disks or microcomputer floppy disks until the late 1980s. GCR is a modified form of a NRZI code, but necessarily with a higher transition density.
Magnetic tape
Group coded recording was first used for magnetic-tape data storage on 9-track reel-to-reel tape. The term was coined during the development of the IBM 3420 Model 4/6/8 Magnetic Tape Unit and the corresponding 3803 Model2 Tape Control Unit, both introduced in 1973. IBM referred to the error correcting code itself as "group coded recording". However, GCR has come to refer to the recording format of 6250bpi (250bits/mm) tape as a whole, and later to formats which use similar RLL codes without the error correction code.
In order to reliably read and write to magnetic tape, several constraints on the signal to be written must be followed. The first is that two adjacent flux reversals must be separated by a certain distance on the media, defined by the magnetic properties of the media itself. The second is that there must be a reversal often enough to keep the reader's clock in phase with the written signal; that is, the signal must be self-clocking and most importantly to keep the playback output high enough as this is proportional to the density of flux transitions. Prior to 6250bpi tapes, 1600bpi tapes satisfied these constraints using a technique called phase encoding (PE), which was only 50% efficient. For 6250bpi GCR tapes, a (0,2)RLL code is used, or more specifically a 4/5(0,2) block code sometimes also referred to as GCR (4B-5B) encoding. This code requires five bits to be written for every four bits of data. The code is structured so that no more than two zero bits (which are represented by lack of a flux reversal) can occur in a row, either within a code or between codes, no matter what the data was. This RLL code is applied independently to the data going to each of the nine tracks.
Of the 32 five-bit patterns, eight begin with two consecutive zero bits, six others end with two consecutive zero bits, and one more (10001) contains three consecutive zero bits. Removing the all-ones pattern (11111) from the remainder leaves 16 suitable code words.
The 6250bpi GCR RLL code:
| 4-bit value | GCR code | ||
|---|---|---|---|
| 4-bit valueGCR code hexbinbinhex 0x000001.10010x19 0x100011.10110x1B 0x200101.00100x12 0x300111.00110x13 0x401001.11010x1D 0x501011.01010x15 0x601101.01100x16 0x701111.01110x17 | 4-bit valueGCR code hexbinbinhex 0x810001.10100x1A 0x910010.10010x09 0xA10100.10100x0A 0xB10110.10110x0B 0xC11001.11100x1E 0xD11010.11010x0D 0xE11100.11100x0E 0xF11110.11110x0F | ||
| hex | bin | bin | hex |
| 0x0 | 0000 | 1.1001 | 0x19 |
| 0x1 | 0001 | 1.1011 | 0x1B |
| 0x2 | 0010 | 1.0010 | 0x12 |
| 0x3 | 0011 | 1.0011 | 0x13 |
| 0x4 | 0100 | 1.1101 | 0x1D |
| 0x5 | 0101 | 1.0101 | 0x15 |
| 0x6 | 0110 | 1.0110 | 0x16 |
| 0x7 | 0111 | 1.0111 | 0x17 |
| 4-bit value | GCR code | ||
| hex | bin | bin | hex |
| 0x8 | 1000 | 1.1010 | 0x1A |
| 0x9 | 1001 | 0.1001 | 0x09 |
| 0xA | 1010 | 0.1010 | 0x0A |
| 0xB | 1011 | 0.1011 | 0x0B |
| 0xC | 1100 | 1.1110 | 0x1E |
| 0xD | 1101 | 0.1101 | 0x0D |
| 0xE | 1110 | 0.1110 | 0x0E |
| 0xF | 1111 | 0.1111 | 0x0F |
11 of the nibbles (other than xx00 and 0001) have their code formed by prepending the complement of the most significant bit; i.e. abcd is encoded as aabcd. The other five values are assigned codes beginning with 11. Nibbles of the form ab00 have codes 11baa, i.e. the bit reverse of the code for ab11. The code 0001 is assigned the remaining value 11011.
Because the all-ones code is not used in normal data, at most 8 one-bits can appear in a row. Sequences of 9 or more one-bits (in practice 14 all-ones codes, or 70 one-bits, were used) are used as a synchronization pattern.
Because of the extremely high density (for the time) of 6250bpi tape, the RLL code is not sufficient to ensure reliable data storage. On top of the RLL code, an error-correcting code called the Optimal Rectangular Code (ORC) is applied. This code is a combination of a parity track and polynomial code similar to a CRC, but structured for error correction rather than error detection. For every seven bytes written to the tape (before RLL encoding), an eighth check byte is calculated and written to the tape. When reading, the parity is calculated on each byte and exclusive-ORed with the contents of the parity track, and the polynomial check code calculated and exclusive-ORed with the received check code, resulting in two 8-bit syndrome words. If these are both zero, the data is error free. Otherwise, error-correction logic in the tape controller corrects the data before it is forwarded to the host. The error correcting code is able to correct any number of errors in any single track, or in any two tracks if the erroneous tracks can be identified by other means.
In newer IBM half-inch 18-track tape drives recording at 24000bpi, 4/5(0,2) GCR was replaced by a more efficient 8/9(0,3) modulation code, mapping eight bits to nine bits.
Hard disks
In the mid-1970s, Sperry Univac, ISS Division was working on large hard drives for the mainframe business using group coding.
Floppy disks
Like magnetic tape drives, floppy disk drives have physical limits on the spacing of flux reversals (also called transitions, represented by one-bits).
Micropolis
Offering GCR-compatible diskette drives and floppy disk controllers (like the 100163-51-8 and 100163-52-6), Micropolis endorsed data encoding with group coded recording on 5¼-inch 100 tpi 77-track diskette drives to store twelve 512-byte sectors per track since 1977 or 1978.
Micro Peripherals
Micro Peripherals, Inc. (MPI) marketed double-density 5¼-inch disk drives (like the single-sided B51 and double-sided B52 drives) and a controller solution implementing GCR since early 1978.
Durango
The Durango Systems F-85 (introduced in September 1978) used single-sided 5¼-inch 100tpi diskette drives providing 480KB utilizing a proprietary high-density 4/5 group coded encoding. The machine was using a Western Digital FD1781 floppy disk controller, designed by a former Sperry ISS engineer, with 77-track Micropolis drives. In later models such as the Durango 800 series this was expanded to a double-sided option for 960KB (946KB formatted) per diskette.
Apple
For the Apple II floppy drive, Steve Wozniak invented a floppy controller which (along with the Disk II drive itself) imposed two constraints:
- Between any two one bits, there may be a maximum of one zero bit.
- Each 8-bit byte must start with a one bit.
The simplest scheme to ensure compliance with these limits is to record an extra "clock" transition before each data bit according to differential Manchester encoding or (digital) FM (frequency modulation). Known as 4-and-4 encoding, the resulting Apple implementation allowed only ten 256-byte sectors per track to be recorded on a single-density 5¼-inch floppy. It uses two bytes for each byte.
| Value | Code | ||
|---|---|---|---|
| ValueCode hexbinbinhex 0x000000.00001010.1010 1010.10100xAA 0xAA 0x010000.00011010.1010 1010.10110xAA 0xAB 0x020000.00101010.1011 1010.10100xAB 0xAA 0x030000.00111010.1011 1010.10110xAB 0xAB 0x040000.01001010.1010 1010.11100xAA 0xAE 0x050000.01011010.1010 1010.11110xAA 0xAF 0x060000.01101010.1011 1010.11100xAB 0xAE 0x070000.01111010.1011 1010.11110xAB 0xAF 0x080000.10001010.1110 1010.10100xAE 0xAA 0x090000.10011010.1110 1010.10110xAE 0xAB 0x0A0000.10101010.1111 1010.10100xAF 0xAA 0x0B0000.10111010.1111 1010.10110xAF 0xAB 0x0C0000.11001010.1110 1010.11100xAE 0xAE 0x0D0000.11011010.1110 1010.11110xAE 0xAF 0x0E0000.11101010.1111 1010.11100xAF 0xAE 0x0F0000.11111010.1111 1010.11110xAF 0xAF 0x100001.00001010.1010 1011.10100xAA 0xBA 0x110001.00011010.1010 1011.10110xAA 0xBB 0x120001.00101010.1011 1011.10100xAB 0xBA 0x130001.00111010.1011 1011.10110xAB 0xBB 0x140001.01001010.1010 1011.11100xAA 0xBE 0x150001.01011010.1010 1011.11110xAA 0xBF 0x160001.01101010.1011 1011.11100xAB 0xBE 0x170001.01111010.1011 1011.11110xAB 0xBF 0x180001.10001010.1110 1011.10100xAE 0xBA 0x190001.10011010.1110 1011.10110xAE 0xBB 0x1A0001.10101010.1111 1011.10100xAF 0xBA 0x1B0001.10111010.1111 1011.10110xAF 0xBB 0x1C0001.11001010.1110 1011.11100xAE 0xBE 0x1D0001.11011010.1110 1011.11110xAE 0xBF 0x1E0001.11101010.1111 1011.11100xAF 0xBE 0x1F0001.11111010.1111 1011.11110xAF 0xBF 0x200010.00001011.1010 1010.10100xBA 0xAA 0x210010.00011011.1010 1010.10110xBA 0xAB 0x220010.00101011.1011 1010.10100xBB 0xAA 0x230010.00111011.1011 1010.10110xBB 0xAB 0x240010.01001011.1010 1010.11100xBA 0xAE 0x250010.01011011.1010 1010.11110xBA 0xAF 0x260010.01101011.1011 1010.11100xBB 0xAE 0x270010.01111011.1011 1010.11110xBB 0xAF 0x280010.10001011.1110 1010.10100xBE 0xAA 0x290010.10011011.1110 1010.10110xBE 0xAB 0x2A0010.10101011.1111 1010.10100xBF 0xAA 0x2B0010.10111011.1111 1010.10110xBF 0xAB 0x2C0010.11001011.1110 1010.11100xBE 0xAE 0x2D0010.11011011.1110 1010.11110xBE 0xAF 0x2E0010.11101011.1111 1010.11100xBF 0xAE 0x2F0010.11111011.1111 1010.11110xBF 0xAF 0x300011.00001011.1010 1011.10100xBA 0xBA 0x310011.00011011.1010 1011.10110xBA 0xBB 0x320011.00101011.1011 1011.10100xBB 0xBA 0x330011.00111011.1011 1011.10110xBB 0xBB 0x340011.01001011.1010 1011.11100xBA 0xBE 0x350011.01011011.1010 1011.11110xBA 0xBF 0x360011.01101011.1011 1011.11100xBB 0xBE 0x370011.01111011.1011 1011.11110xBB 0xBF 0x380011.10001011.1110 1011.10100xBE 0xBA 0x390011.10011011.1110 1011.10110xBE 0xBB 0x3A0011.10101011.1111 1011.10100xBF 0xBA 0x3B0011.10111011.1111 1011.10110xBF 0xBB 0x3C0011.11001011.1110 1011.11100xBE 0xBE 0x3D0011.11011011.1110 1011.11110xBE 0xBF 0x3E0011.11101011.1111 1011.11100xBF 0xBE 0x3F0011.11111011.1111 1011.11110xBF 0xBF | ValueCode hexbinbinhex 0x400100.00001010.1010 1110.10100xAA 0xEA 0x410100.00011010.1010 1110.10110xAA 0xEB 0x420100.00101010.1011 1110.10100xAB 0xEA 0x430100.00111010.1011 1110.10110xAB 0xEB 0x440100.01001010.1010 1110.11100xAA 0xEE 0x450100.01011010.1010 1110.11110xAA 0xEF 0x460100.01101010.1011 1110.11100xAB 0xEE 0x470100.01111010.1011 1110.11110xAB 0xEF 0x480100.10001010.1110 1110.10100xAE 0xEA 0x490100.10011010.1110 1110.10110xAE 0xEB 0x4A0100.10101010.1111 1110.10100xAF 0xEA 0x4B0100.10111010.1111 1110.10110xAF 0xEB 0x4C0100.11001010.1110 1110.11100xAE 0xEE 0x4D0100.11011010.1110 1110.11110xAE 0xEF 0x4E0100.11101010.1111 1110.11100xAF 0xEE 0x4F0100.11111010.1111 1110.11110xAF 0xEF 0x500101.00001010.1010 1111.10100xAA 0xFA 0x510101.00011010.1010 1111.10110xAA 0xFB 0x520101.00101010.1011 1111.10100xAB 0xFA 0x530101.00111010.1011 1111.10110xAB 0xFB 0x540101.01001010.1010 1111.11100xAA 0xFE 0x550101.01011010.1010 1111.11110xAA 0xFF 0x560101.01101010.1011 1111.11100xAB 0xFE 0x570101.01111010.1011 1111.11110xAB 0xFF 0x580101.10001010.1110 1111.10100xAE 0xFA 0x590101.10011010.1110 1111.10110xAE 0xFB 0x5A0101.10101010.1111 1111.10100xAF 0xFA 0x5B0101.10111010.1111 1111.10110xAF 0xFB 0x5C0101.11001010.1110 1111.11100xAE 0xFE 0x5D0101.11011010.1110 1111.11110xAE 0xFF 0x5E0101.11101010.1111 1111.11100xAF 0xFE 0x5F0101.11111010.1111 1111.11110xAF 0xFF 0x600110.00001011.1010 1110.10100xBA 0xEA 0x610110.00011011.1010 1110.10110xBA 0xEB 0x620110.00101011.1011 1110.10100xBB 0xEA 0x630110.00111011.1011 1110.10110xBB 0xEB 0x640110.01001011.1010 1110.11100xBA 0xEE 0x650110.01011011.1010 1110.11110xBA 0xEF 0x660110.01101011.1011 1110.11100xBB 0xEE 0x670110.01111011.1011 1110.11110xBB 0xEF 0x680110.10001011.1110 1110.10100xBE 0xEA 0x690110.10011011.1110 1110.10110xBE 0xEB 0x6A0110.10101011.1111 1110.10100xBF 0xEA 0x6B0110.10111011.1111 1110.10110xBF 0xEB 0x6C0110.11001011.1110 1110.11100xBE 0xEE 0x6D0110.11011011.1110 1110.11110xBE 0xEF 0x6E0110.11101011.1111 1110.11100xBF 0xEE 0x6F0110.11111011.1111 1110.11110xBF 0xEF 0x700111.00001011.1010 1111.10100xBA 0xFA 0x710111.00011011.1010 1111.10110xBA 0xFB 0x720111.00101011.1011 1111.10100xBB 0xFA 0x730111.00111011.1011 1111.10110xBB 0xFB 0x740111.01001011.1010 1111.11100xBA 0xFE 0x750111.01011011.1010 1111.11110xBA 0xFF 0x760111.01101011.1011 1111.11100xBB 0xFE 0x770111.01111011.1011 1111.11110xBB 0xFF 0x780111.10001011.1110 1111.10100xBE 0xFA 0x790111.10011011.1110 1111.10110xBE 0xFB 0x7A0111.10101011.1111 1111.10100xBF 0xFA 0x7B0111.10111011.1111 1111.10110xBF 0xFB 0x7C0111.11001011.1110 1111.11100xBE 0xFE 0x7D0111.11011011.1110 1111.11110xBE 0xFF 0x7E0111.11101011.1111 1111.11100xBF 0xFE 0x7F0111.11111011.1111 1111.11110xBF 0xFF | ValueCode hexbinbinhex 0x801000.00001110.1010 1010.10100xEA 0xAA 0x811000.00011110.1010 1010.10110xEA 0xAB 0x821000.00101110.1011 1010.10100xEB 0xAA 0x831000.00111110.1011 1010.10110xEB 0xAB 0x841000.01001110.1010 1010.11100xEA 0xAE 0x851000.01011110.1010 1010.11110xEA 0xAF 0x861000.01101110.1011 1010.11100xEB 0xAE 0x871000.01111110.1011 1010.11110xEB 0xAF 0x881000.10001110.1110 1010.10100xEE 0xAA 0x891000.10011110.1110 1010.10110xEE 0xAB 0x8A1000.10101110.1111 1010.10100xEF 0xAA 0x8B1000.10111110.1111 1010.10110xEF 0xAB 0x8C1000.11001110.1110 1010.11100xEE 0xAE 0x8D1000.11011110.1110 1010.11110xEE 0xAF 0x8E1000.11101110.1111 1010.11100xEF 0xAE 0x8F1000.11111110.1111 1010.11110xEF 0xAF 0x901001.00001110.1010 1011.10100xEA 0xBA 0x911001.00011110.1010 1011.10110xEA 0xBB 0x921001.00101110.1011 1011.10100xEB 0xBA 0x931001.00111110.1011 1011.10110xEB 0xBB 0x941001.01001110.1010 1011.11100xEA 0xBE 0x951001.01011110.1010 1011.11110xEA 0xBF 0x961001.01101110.1011 1011.11100xEB 0xBE 0x971001.01111110.1011 1011.11110xEB 0xBF 0x981001.10001110.1110 1011.10100xEE 0xBA 0x991001.10011110.1110 1011.10110xEE 0xBB 0x9A1001.10101110.1111 1011.10100xEF 0xBA 0x9B1001.10111110.1111 1011.10110xEF 0xBB 0x9C1001.11001110.1110 1011.11100xEE 0xBE 0x9D1001.11011110.1110 1011.11110xEE 0xBF 0x9E1001.11101110.1111 1011.11100xEF 0xBE 0x9F1001.11111110.1111 1011.11110xEF 0xBF 0xA01010.00001111.1010 1010.10100xFA 0xAA 0xA11010.00011111.1010 1010.10110xFA 0xAB 0xA21010.00101111.1011 1010.10100xFB 0xAA 0xA31010.00111111.1011 1010.10110xFB 0xAB 0xA41010.01001111.1010 1010.11100xFA 0xAE 0xA51010.01011111.1010 1010.11110xFA 0xAF 0xA61010.01101111.1011 1010.11100xFB 0xAE 0xA71010.01111111.1011 1010.11110xFB 0xAF 0xA81010.10001111.1110 1010.10100xFE 0xAA 0xA91010.10011111.1110 1010.10110xFE 0xAB 0xAA1010.10101111.1111 1010.10100xFF 0xAA 0xAB1010.10111111.1111 1010.10110xFF 0xAB 0xAC1010.11001111.1110 1010.11100xFE 0xAE 0xAD1010.11011111.1110 1010.11110xFE 0xAF 0xAE1010.11101111.1111 1010.11100xFF 0xAE 0xAF1010.11111111.1111 1010.11110xFF 0xAF 0xB01011.00001111.1010 1011.10100xFA 0xBA 0xB11011.00011111.1010 1011.10110xFA 0xBB 0xB21011.00101111.1011 1011.10100xFB 0xBA 0xB31011.00111111.1011 1011.10110xFB 0xBB 0xB41011.01001111.1010 1011.11100xFA 0xBE 0xB51011.01011111.1010 1011.11110xFA 0xBF 0xB61011.01101111.1011 1011.11100xFB 0xBE 0xB71011.01111111.1011 1011.11110xFB 0xBF 0xB81011.10001111.1110 1011.10100xFE 0xBA 0xB91011.10011111.1110 1011.10110xFE 0xBB 0xBA1011.10101111.1111 1011.10100xFF 0xBA 0xBB1011.10111111.1111 1011.10110xFF 0xBB 0xBC1011.11001111.1110 1011.11100xFE 0xBE 0xBD1011.11011111.1110 1011.11110xFE 0xBF 0xBE1011.11101111.1111 1011.11100xFF 0xBE 0xBF1011.11111111.1111 1011.11110xFF 0xBF | ValueCode hexbinbinhex 0xC01100.00001110.1010 1110.10100xEA 0xEA 0xC11100.00011110.1010 1110.10110xEA 0xEB 0xC21100.00101110.1011 1110.10100xEB 0xEA 0xC31100.00111110.1011 1110.10110xEB 0xEB 0xC41100.01001110.1010 1110.11100xEA 0xEE 0xC51100.01011110.1010 1110.11110xEA 0xEF 0xC61100.01101110.1011 1110.11100xEB 0xEE 0xC71100.01111110.1011 1110.11110xEB 0xEF 0xC81100.10001110.1110 1110.10100xEE 0xEA 0xC91100.10011110.1110 1110.10110xEE 0xEB 0xCA1100.10101110.1111 1110.10100xEF 0xEA 0xCB1100.10111110.1111 1110.10110xEF 0xEB 0xCC1100.11001110.1110 1110.11100xEE 0xEE 0xCD1100.11011110.1110 1110.11110xEE 0xEF 0xCE1100.11101110.1111 1110.11100xEF 0xEE 0xCF1100.11111110.1111 1110.11110xEF 0xEF 0xD01101.00001110.1010 1111.10100xEA 0xFA 0xD11101.00011110.1010 1111.10110xEA 0xFB 0xD21101.00101110.1011 1111.10100xEB 0xFA 0xD31101.00111110.1011 1111.10110xEB 0xFB 0xD41101.01001110.1010 1111.11100xEA 0xFE 0xD51101.01011110.1010 1111.11110xEA 0xFF 0xD61101.01101110.1011 1111.11100xEB 0xFE 0xD71101.01111110.1011 1111.11110xEB 0xFF 0xD81101.10001110.1110 1111.10100xEE 0xFA 0xD91101.10011110.1110 1111.10110xEE 0xFB 0xDA1101.10101110.1111 1111.10100xEF 0xFA 0xDB1101.10111110.1111 1111.10110xEF 0xFB 0xDC1101.11001110.1110 1111.11100xEE 0xFE 0xDD1101.11011110.1110 1111.11110xEE 0xFF 0xDE1101.11101110.1111 1111.11100xEF 0xFE 0xDF1101.11111110.1111 1111.11110xEF 0xFF 0xE01110.00001111.1010 1110.10100xFA 0xEA 0xE11110.00011111.1010 1110.10110xFA 0xEB 0xE21110.00101111.1011 1110.10100xFB 0xEA 0xE31110.00111111.1011 1110.10110xFB 0xEB 0xE41110.01001111.1010 1110.11100xFA 0xEE 0xE51110.01011111.1010 1110.11110xFA 0xEF 0xE61110.01101111.1011 1110.11100xFB 0xEE 0xE71110.01111111.1011 1110.11110xFB 0xEF 0xE81110.10001111.1110 1110.10100xFE 0xEA 0xE91110.10011111.1110 1110.10110xFE 0xEB 0xEA1110.10101111.1111 1110.10100xFF 0xEA 0xEB1110.10111111.1111 1110.10110xFF 0xEB 0xEC1110.11001111.1110 1110.11100xFE 0xEE 0xED1110.11011111.1110 1110.11110xFE 0xEF 0xEE1110.11101111.1111 1110.11100xFF 0xEE 0xEF1110.11111111.1111 1110.11110xFF 0xEF 0xF01111.00001111.1010 1111.10100xFA 0xFA 0xF11111.00011111.1010 1111.10110xFA 0xFB 0xF21111.00101111.1011 1111.10100xFB 0xFA 0xF31111.00111111.1011 1111.10110xFB 0xFB 0xF41111.01001111.1010 1111.11100xFA 0xFE 0xF51111.01011111.1010 1111.11110xFA 0xFF 0xF61111.01101111.1011 1111.11100xFB 0xFE 0xF71111.01111111.1011 1111.11110xFB 0xFF 0xF81111.10001111.1110 1111.10100xFE 0xFA 0xF91111.10011111.1110 1111.10110xFE 0xFB 0xFA1111.10101111.1111 1111.10100xFF 0xFA 0xFB1111.10111111.1111 1111.10110xFF 0xFB 0xFC1111.11001111.1110 1111.11100xFE 0xFE 0xFD1111.11011111.1110 1111.11110xFE 0xFF 0xFE1111.11101111.1111 1111.11100xFF 0xFE 0xFF1111.11111111.1111 1111.11110xFF 0xFF |
| hex | bin | bin | hex |
| 0x00 | 0000.0000 | 1010.1010 1010.1010 | 0xAA 0xAA |
| 0x01 | 0000.0001 | 1010.1010 1010.1011 | 0xAA 0xAB |
| 0x02 | 0000.0010 | 1010.1011 1010.1010 | 0xAB 0xAA |
| 0x03 | 0000.0011 | 1010.1011 1010.1011 | 0xAB 0xAB |
| 0x04 | 0000.0100 | 1010.1010 1010.1110 | 0xAA 0xAE |
| 0x05 | 0000.0101 | 1010.1010 1010.1111 | 0xAA 0xAF |
| 0x06 | 0000.0110 | 1010.1011 1010.1110 | 0xAB 0xAE |
| 0x07 | 0000.0111 | 1010.1011 1010.1111 | 0xAB 0xAF |
| 0x08 | 0000.1000 | 1010.1110 1010.1010 | 0xAE 0xAA |
| 0x09 | 0000.1001 | 1010.1110 1010.1011 | 0xAE 0xAB |
| 0x0A | 0000.1010 | 1010.1111 1010.1010 | 0xAF 0xAA |
| 0x0B | 0000.1011 | 1010.1111 1010.1011 | 0xAF 0xAB |
| 0x0C | 0000.1100 | 1010.1110 1010.1110 | 0xAE 0xAE |
| 0x0D | 0000.1101 | 1010.1110 1010.1111 | 0xAE 0xAF |
| 0x0E | 0000.1110 | 1010.1111 1010.1110 | 0xAF 0xAE |
| 0x0F | 0000.1111 | 1010.1111 1010.1111 | 0xAF 0xAF |
| 0x10 | 0001.0000 | 1010.1010 1011.1010 | 0xAA 0xBA |
| 0x11 | 0001.0001 | 1010.1010 1011.1011 | 0xAA 0xBB |
| 0x12 | 0001.0010 | 1010.1011 1011.1010 | 0xAB 0xBA |
| 0x13 | 0001.0011 | 1010.1011 1011.1011 | 0xAB 0xBB |
| 0x14 | 0001.0100 | 1010.1010 1011.1110 | 0xAA 0xBE |
| 0x15 | 0001.0101 | 1010.1010 1011.1111 | 0xAA 0xBF |
| 0x16 | 0001.0110 | 1010.1011 1011.1110 | 0xAB 0xBE |
| 0x17 | 0001.0111 | 1010.1011 1011.1111 | 0xAB 0xBF |
| 0x18 | 0001.1000 | 1010.1110 1011.1010 | 0xAE 0xBA |
| 0x19 | 0001.1001 | 1010.1110 1011.1011 | 0xAE 0xBB |
| 0x1A | 0001.1010 | 1010.1111 1011.1010 | 0xAF 0xBA |
| 0x1B | 0001.1011 | 1010.1111 1011.1011 | 0xAF 0xBB |
| 0x1C | 0001.1100 | 1010.1110 1011.1110 | 0xAE 0xBE |
| 0x1D | 0001.1101 | 1010.1110 1011.1111 | 0xAE 0xBF |
| 0x1E | 0001.1110 | 1010.1111 1011.1110 | 0xAF 0xBE |
| 0x1F | 0001.1111 | 1010.1111 1011.1111 | 0xAF 0xBF |
| 0x20 | 0010.0000 | 1011.1010 1010.1010 | 0xBA 0xAA |
| 0x21 | 0010.0001 | 1011.1010 1010.1011 | 0xBA 0xAB |
| 0x22 | 0010.0010 | 1011.1011 1010.1010 | 0xBB 0xAA |
| 0x23 | 0010.0011 | 1011.1011 1010.1011 | 0xBB 0xAB |
| 0x24 | 0010.0100 | 1011.1010 1010.1110 | 0xBA 0xAE |
| 0x25 | 0010.0101 | 1011.1010 1010.1111 | 0xBA 0xAF |
| 0x26 | 0010.0110 | 1011.1011 1010.1110 | 0xBB 0xAE |
| 0x27 | 0010.0111 | 1011.1011 1010.1111 | 0xBB 0xAF |
| 0x28 | 0010.1000 | 1011.1110 1010.1010 | 0xBE 0xAA |
| 0x29 | 0010.1001 | 1011.1110 1010.1011 | 0xBE 0xAB |
| 0x2A | 0010.1010 | 1011.1111 1010.1010 | 0xBF 0xAA |
| 0x2B | 0010.1011 | 1011.1111 1010.1011 | 0xBF 0xAB |
| 0x2C | 0010.1100 | 1011.1110 1010.1110 | 0xBE 0xAE |
| 0x2D | 0010.1101 | 1011.1110 1010.1111 | 0xBE 0xAF |
| 0x2E | 0010.1110 | 1011.1111 1010.1110 | 0xBF 0xAE |
| 0x2F | 0010.1111 | 1011.1111 1010.1111 | 0xBF 0xAF |
| 0x30 | 0011.0000 | 1011.1010 1011.1010 | 0xBA 0xBA |
| 0x31 | 0011.0001 | 1011.1010 1011.1011 | 0xBA 0xBB |
| 0x32 | 0011.0010 | 1011.1011 1011.1010 | 0xBB 0xBA |
| 0x33 | 0011.0011 | 1011.1011 1011.1011 | 0xBB 0xBB |
| 0x34 | 0011.0100 | 1011.1010 1011.1110 | 0xBA 0xBE |
| 0x35 | 0011.0101 | 1011.1010 1011.1111 | 0xBA 0xBF |
| 0x36 | 0011.0110 | 1011.1011 1011.1110 | 0xBB 0xBE |
| 0x37 | 0011.0111 | 1011.1011 1011.1111 | 0xBB 0xBF |
| 0x38 | 0011.1000 | 1011.1110 1011.1010 | 0xBE 0xBA |
| 0x39 | 0011.1001 | 1011.1110 1011.1011 | 0xBE 0xBB |
| 0x3A | 0011.1010 | 1011.1111 1011.1010 | 0xBF 0xBA |
| 0x3B | 0011.1011 | 1011.1111 1011.1011 | 0xBF 0xBB |
| 0x3C | 0011.1100 | 1011.1110 1011.1110 | 0xBE 0xBE |
| 0x3D | 0011.1101 | 1011.1110 1011.1111 | 0xBE 0xBF |
| 0x3E | 0011.1110 | 1011.1111 1011.1110 | 0xBF 0xBE |
| 0x3F | 0011.1111 | 1011.1111 1011.1111 | 0xBF 0xBF |
| Value | Code | ||
| hex | bin | bin | hex |
| 0x40 | 0100.0000 | 1010.1010 1110.1010 | 0xAA 0xEA |
| 0x41 | 0100.0001 | 1010.1010 1110.1011 | 0xAA 0xEB |
| 0x42 | 0100.0010 | 1010.1011 1110.1010 | 0xAB 0xEA |
| 0x43 | 0100.0011 | 1010.1011 1110.1011 | 0xAB 0xEB |
| 0x44 | 0100.0100 | 1010.1010 1110.1110 | 0xAA 0xEE |
| 0x45 | 0100.0101 | 1010.1010 1110.1111 | 0xAA 0xEF |
| 0x46 | 0100.0110 | 1010.1011 1110.1110 | 0xAB 0xEE |
| 0x47 | 0100.0111 | 1010.1011 1110.1111 | 0xAB 0xEF |
| 0x48 | 0100.1000 | 1010.1110 1110.1010 | 0xAE 0xEA |
| 0x49 | 0100.1001 | 1010.1110 1110.1011 | 0xAE 0xEB |
| 0x4A | 0100.1010 | 1010.1111 1110.1010 | 0xAF 0xEA |
| 0x4B | 0100.1011 | 1010.1111 1110.1011 | 0xAF 0xEB |
| 0x4C | 0100.1100 | 1010.1110 1110.1110 | 0xAE 0xEE |
| 0x4D | 0100.1101 | 1010.1110 1110.1111 | 0xAE 0xEF |
| 0x4E | 0100.1110 | 1010.1111 1110.1110 | 0xAF 0xEE |
| 0x4F | 0100.1111 | 1010.1111 1110.1111 | 0xAF 0xEF |
| 0x50 | 0101.0000 | 1010.1010 1111.1010 | 0xAA 0xFA |
| 0x51 | 0101.0001 | 1010.1010 1111.1011 | 0xAA 0xFB |
| 0x52 | 0101.0010 | 1010.1011 1111.1010 | 0xAB 0xFA |
| 0x53 | 0101.0011 | 1010.1011 1111.1011 | 0xAB 0xFB |
| 0x54 | 0101.0100 | 1010.1010 1111.1110 | 0xAA 0xFE |
| 0x55 | 0101.0101 | 1010.1010 1111.1111 | 0xAA 0xFF |
| 0x56 | 0101.0110 | 1010.1011 1111.1110 | 0xAB 0xFE |
| 0x57 | 0101.0111 | 1010.1011 1111.1111 | 0xAB 0xFF |
| 0x58 | 0101.1000 | 1010.1110 1111.1010 | 0xAE 0xFA |
| 0x59 | 0101.1001 | 1010.1110 1111.1011 | 0xAE 0xFB |
| 0x5A | 0101.1010 | 1010.1111 1111.1010 | 0xAF 0xFA |
| 0x5B | 0101.1011 | 1010.1111 1111.1011 | 0xAF 0xFB |
| 0x5C | 0101.1100 | 1010.1110 1111.1110 | 0xAE 0xFE |
| 0x5D | 0101.1101 | 1010.1110 1111.1111 | 0xAE 0xFF |
| 0x5E | 0101.1110 | 1010.1111 1111.1110 | 0xAF 0xFE |
| 0x5F | 0101.1111 | 1010.1111 1111.1111 | 0xAF 0xFF |
| 0x60 | 0110.0000 | 1011.1010 1110.1010 | 0xBA 0xEA |
| 0x61 | 0110.0001 | 1011.1010 1110.1011 | 0xBA 0xEB |
| 0x62 | 0110.0010 | 1011.1011 1110.1010 | 0xBB 0xEA |
| 0x63 | 0110.0011 | 1011.1011 1110.1011 | 0xBB 0xEB |
| 0x64 | 0110.0100 | 1011.1010 1110.1110 | 0xBA 0xEE |
| 0x65 | 0110.0101 | 1011.1010 1110.1111 | 0xBA 0xEF |
| 0x66 | 0110.0110 | 1011.1011 1110.1110 | 0xBB 0xEE |
| 0x67 | 0110.0111 | 1011.1011 1110.1111 | 0xBB 0xEF |
| 0x68 | 0110.1000 | 1011.1110 1110.1010 | 0xBE 0xEA |
| 0x69 | 0110.1001 | 1011.1110 1110.1011 | 0xBE 0xEB |
| 0x6A | 0110.1010 | 1011.1111 1110.1010 | 0xBF 0xEA |
| 0x6B | 0110.1011 | 1011.1111 1110.1011 | 0xBF 0xEB |
| 0x6C | 0110.1100 | 1011.1110 1110.1110 | 0xBE 0xEE |
| 0x6D | 0110.1101 | 1011.1110 1110.1111 | 0xBE 0xEF |
| 0x6E | 0110.1110 | 1011.1111 1110.1110 | 0xBF 0xEE |
| 0x6F | 0110.1111 | 1011.1111 1110.1111 | 0xBF 0xEF |
| 0x70 | 0111.0000 | 1011.1010 1111.1010 | 0xBA 0xFA |
| 0x71 | 0111.0001 | 1011.1010 1111.1011 | 0xBA 0xFB |
| 0x72 | 0111.0010 | 1011.1011 1111.1010 | 0xBB 0xFA |
| 0x73 | 0111.0011 | 1011.1011 1111.1011 | 0xBB 0xFB |
| 0x74 | 0111.0100 | 1011.1010 1111.1110 | 0xBA 0xFE |
| 0x75 | 0111.0101 | 1011.1010 1111.1111 | 0xBA 0xFF |
| 0x76 | 0111.0110 | 1011.1011 1111.1110 | 0xBB 0xFE |
| 0x77 | 0111.0111 | 1011.1011 1111.1111 | 0xBB 0xFF |
| 0x78 | 0111.1000 | 1011.1110 1111.1010 | 0xBE 0xFA |
| 0x79 | 0111.1001 | 1011.1110 1111.1011 | 0xBE 0xFB |
| 0x7A | 0111.1010 | 1011.1111 1111.1010 | 0xBF 0xFA |
| 0x7B | 0111.1011 | 1011.1111 1111.1011 | 0xBF 0xFB |
| 0x7C | 0111.1100 | 1011.1110 1111.1110 | 0xBE 0xFE |
| 0x7D | 0111.1101 | 1011.1110 1111.1111 | 0xBE 0xFF |
| 0x7E | 0111.1110 | 1011.1111 1111.1110 | 0xBF 0xFE |
| 0x7F | 0111.1111 | 1011.1111 1111.1111 | 0xBF 0xFF |
| Value | Code | ||
| hex | bin | bin | hex |
| 0x80 | 1000.0000 | 1110.1010 1010.1010 | 0xEA 0xAA |
| 0x81 | 1000.0001 | 1110.1010 1010.1011 | 0xEA 0xAB |
| 0x82 | 1000.0010 | 1110.1011 1010.1010 | 0xEB 0xAA |
| 0x83 | 1000.0011 | 1110.1011 1010.1011 | 0xEB 0xAB |
| 0x84 | 1000.0100 | 1110.1010 1010.1110 | 0xEA 0xAE |
| 0x85 | 1000.0101 | 1110.1010 1010.1111 | 0xEA 0xAF |
| 0x86 | 1000.0110 | 1110.1011 1010.1110 | 0xEB 0xAE |
| 0x87 | 1000.0111 | 1110.1011 1010.1111 | 0xEB 0xAF |
| 0x88 | 1000.1000 | 1110.1110 1010.1010 | 0xEE 0xAA |
| 0x89 | 1000.1001 | 1110.1110 1010.1011 | 0xEE 0xAB |
| 0x8A | 1000.1010 | 1110.1111 1010.1010 | 0xEF 0xAA |
| 0x8B | 1000.1011 | 1110.1111 1010.1011 | 0xEF 0xAB |
| 0x8C | 1000.1100 | 1110.1110 1010.1110 | 0xEE 0xAE |
| 0x8D | 1000.1101 | 1110.1110 1010.1111 | 0xEE 0xAF |
| 0x8E | 1000.1110 | 1110.1111 1010.1110 | 0xEF 0xAE |
| 0x8F | 1000.1111 | 1110.1111 1010.1111 | 0xEF 0xAF |
| 0x90 | 1001.0000 | 1110.1010 1011.1010 | 0xEA 0xBA |
| 0x91 | 1001.0001 | 1110.1010 1011.1011 | 0xEA 0xBB |
| 0x92 | 1001.0010 | 1110.1011 1011.1010 | 0xEB 0xBA |
| 0x93 | 1001.0011 | 1110.1011 1011.1011 | 0xEB 0xBB |
| 0x94 | 1001.0100 | 1110.1010 1011.1110 | 0xEA 0xBE |
| 0x95 | 1001.0101 | 1110.1010 1011.1111 | 0xEA 0xBF |
| 0x96 | 1001.0110 | 1110.1011 1011.1110 | 0xEB 0xBE |
| 0x97 | 1001.0111 | 1110.1011 1011.1111 | 0xEB 0xBF |
| 0x98 | 1001.1000 | 1110.1110 1011.1010 | 0xEE 0xBA |
| 0x99 | 1001.1001 | 1110.1110 1011.1011 | 0xEE 0xBB |
| 0x9A | 1001.1010 | 1110.1111 1011.1010 | 0xEF 0xBA |
| 0x9B | 1001.1011 | 1110.1111 1011.1011 | 0xEF 0xBB |
| 0x9C | 1001.1100 | 1110.1110 1011.1110 | 0xEE 0xBE |
| 0x9D | 1001.1101 | 1110.1110 1011.1111 | 0xEE 0xBF |
| 0x9E | 1001.1110 | 1110.1111 1011.1110 | 0xEF 0xBE |
| 0x9F | 1001.1111 | 1110.1111 1011.1111 | 0xEF 0xBF |
| 0xA0 | 1010.0000 | 1111.1010 1010.1010 | 0xFA 0xAA |
| 0xA1 | 1010.0001 | 1111.1010 1010.1011 | 0xFA 0xAB |
| 0xA2 | 1010.0010 | 1111.1011 1010.1010 | 0xFB 0xAA |
| 0xA3 | 1010.0011 | 1111.1011 1010.1011 | 0xFB 0xAB |
| 0xA4 | 1010.0100 | 1111.1010 1010.1110 | 0xFA 0xAE |
| 0xA5 | 1010.0101 | 1111.1010 1010.1111 | 0xFA 0xAF |
| 0xA6 | 1010.0110 | 1111.1011 1010.1110 | 0xFB 0xAE |
| 0xA7 | 1010.0111 | 1111.1011 1010.1111 | 0xFB 0xAF |
| 0xA8 | 1010.1000 | 1111.1110 1010.1010 | 0xFE 0xAA |
| 0xA9 | 1010.1001 | 1111.1110 1010.1011 | 0xFE 0xAB |
| 0xAA | 1010.1010 | 1111.1111 1010.1010 | 0xFF 0xAA |
| 0xAB | 1010.1011 | 1111.1111 1010.1011 | 0xFF 0xAB |
| 0xAC | 1010.1100 | 1111.1110 1010.1110 | 0xFE 0xAE |
| 0xAD | 1010.1101 | 1111.1110 1010.1111 | 0xFE 0xAF |
| 0xAE | 1010.1110 | 1111.1111 1010.1110 | 0xFF 0xAE |
| 0xAF | 1010.1111 | 1111.1111 1010.1111 | 0xFF 0xAF |
| 0xB0 | 1011.0000 | 1111.1010 1011.1010 | 0xFA 0xBA |
| 0xB1 | 1011.0001 | 1111.1010 1011.1011 | 0xFA 0xBB |
| 0xB2 | 1011.0010 | 1111.1011 1011.1010 | 0xFB 0xBA |
| 0xB3 | 1011.0011 | 1111.1011 1011.1011 | 0xFB 0xBB |
| 0xB4 | 1011.0100 | 1111.1010 1011.1110 | 0xFA 0xBE |
| 0xB5 | 1011.0101 | 1111.1010 1011.1111 | 0xFA 0xBF |
| 0xB6 | 1011.0110 | 1111.1011 1011.1110 | 0xFB 0xBE |
| 0xB7 | 1011.0111 | 1111.1011 1011.1111 | 0xFB 0xBF |
| 0xB8 | 1011.1000 | 1111.1110 1011.1010 | 0xFE 0xBA |
| 0xB9 | 1011.1001 | 1111.1110 1011.1011 | 0xFE 0xBB |
| 0xBA | 1011.1010 | 1111.1111 1011.1010 | 0xFF 0xBA |
| 0xBB | 1011.1011 | 1111.1111 1011.1011 | 0xFF 0xBB |
| 0xBC | 1011.1100 | 1111.1110 1011.1110 | 0xFE 0xBE |
| 0xBD | 1011.1101 | 1111.1110 1011.1111 | 0xFE 0xBF |
| 0xBE | 1011.1110 | 1111.1111 1011.1110 | 0xFF 0xBE |
| 0xBF | 1011.1111 | 1111.1111 1011.1111 | 0xFF 0xBF |
| Value | Code | ||
| hex | bin | bin | hex |
| 0xC0 | 1100.0000 | 1110.1010 1110.1010 | 0xEA 0xEA |
| 0xC1 | 1100.0001 | 1110.1010 1110.1011 | 0xEA 0xEB |
| 0xC2 | 1100.0010 | 1110.1011 1110.1010 | 0xEB 0xEA |
| 0xC3 | 1100.0011 | 1110.1011 1110.1011 | 0xEB 0xEB |
| 0xC4 | 1100.0100 | 1110.1010 1110.1110 | 0xEA 0xEE |
| 0xC5 | 1100.0101 | 1110.1010 1110.1111 | 0xEA 0xEF |
| 0xC6 | 1100.0110 | 1110.1011 1110.1110 | 0xEB 0xEE |
| 0xC7 | 1100.0111 | 1110.1011 1110.1111 | 0xEB 0xEF |
| 0xC8 | 1100.1000 | 1110.1110 1110.1010 | 0xEE 0xEA |
| 0xC9 | 1100.1001 | 1110.1110 1110.1011 | 0xEE 0xEB |
| 0xCA | 1100.1010 | 1110.1111 1110.1010 | 0xEF 0xEA |
| 0xCB | 1100.1011 | 1110.1111 1110.1011 | 0xEF 0xEB |
| 0xCC | 1100.1100 | 1110.1110 1110.1110 | 0xEE 0xEE |
| 0xCD | 1100.1101 | 1110.1110 1110.1111 | 0xEE 0xEF |
| 0xCE | 1100.1110 | 1110.1111 1110.1110 | 0xEF 0xEE |
| 0xCF | 1100.1111 | 1110.1111 1110.1111 | 0xEF 0xEF |
| 0xD0 | 1101.0000 | 1110.1010 1111.1010 | 0xEA 0xFA |
| 0xD1 | 1101.0001 | 1110.1010 1111.1011 | 0xEA 0xFB |
| 0xD2 | 1101.0010 | 1110.1011 1111.1010 | 0xEB 0xFA |
| 0xD3 | 1101.0011 | 1110.1011 1111.1011 | 0xEB 0xFB |
| 0xD4 | 1101.0100 | 1110.1010 1111.1110 | 0xEA 0xFE |
| 0xD5 | 1101.0101 | 1110.1010 1111.1111 | 0xEA 0xFF |
| 0xD6 | 1101.0110 | 1110.1011 1111.1110 | 0xEB 0xFE |
| 0xD7 | 1101.0111 | 1110.1011 1111.1111 | 0xEB 0xFF |
| 0xD8 | 1101.1000 | 1110.1110 1111.1010 | 0xEE 0xFA |
| 0xD9 | 1101.1001 | 1110.1110 1111.1011 | 0xEE 0xFB |
| 0xDA | 1101.1010 | 1110.1111 1111.1010 | 0xEF 0xFA |
| 0xDB | 1101.1011 | 1110.1111 1111.1011 | 0xEF 0xFB |
| 0xDC | 1101.1100 | 1110.1110 1111.1110 | 0xEE 0xFE |
| 0xDD | 1101.1101 | 1110.1110 1111.1111 | 0xEE 0xFF |
| 0xDE | 1101.1110 | 1110.1111 1111.1110 | 0xEF 0xFE |
| 0xDF | 1101.1111 | 1110.1111 1111.1111 | 0xEF 0xFF |
| 0xE0 | 1110.0000 | 1111.1010 1110.1010 | 0xFA 0xEA |
| 0xE1 | 1110.0001 | 1111.1010 1110.1011 | 0xFA 0xEB |
| 0xE2 | 1110.0010 | 1111.1011 1110.1010 | 0xFB 0xEA |
| 0xE3 | 1110.0011 | 1111.1011 1110.1011 | 0xFB 0xEB |
| 0xE4 | 1110.0100 | 1111.1010 1110.1110 | 0xFA 0xEE |
| 0xE5 | 1110.0101 | 1111.1010 1110.1111 | 0xFA 0xEF |
| 0xE6 | 1110.0110 | 1111.1011 1110.1110 | 0xFB 0xEE |
| 0xE7 | 1110.0111 | 1111.1011 1110.1111 | 0xFB 0xEF |
| 0xE8 | 1110.1000 | 1111.1110 1110.1010 | 0xFE 0xEA |
| 0xE9 | 1110.1001 | 1111.1110 1110.1011 | 0xFE 0xEB |
| 0xEA | 1110.1010 | 1111.1111 1110.1010 | 0xFF 0xEA |
| 0xEB | 1110.1011 | 1111.1111 1110.1011 | 0xFF 0xEB |
| 0xEC | 1110.1100 | 1111.1110 1110.1110 | 0xFE 0xEE |
| 0xED | 1110.1101 | 1111.1110 1110.1111 | 0xFE 0xEF |
| 0xEE | 1110.1110 | 1111.1111 1110.1110 | 0xFF 0xEE |
| 0xEF | 1110.1111 | 1111.1111 1110.1111 | 0xFF 0xEF |
| 0xF0 | 1111.0000 | 1111.1010 1111.1010 | 0xFA 0xFA |
| 0xF1 | 1111.0001 | 1111.1010 1111.1011 | 0xFA 0xFB |
| 0xF2 | 1111.0010 | 1111.1011 1111.1010 | 0xFB 0xFA |
| 0xF3 | 1111.0011 | 1111.1011 1111.1011 | 0xFB 0xFB |
| 0xF4 | 1111.0100 | 1111.1010 1111.1110 | 0xFA 0xFE |
| 0xF5 | 1111.0101 | 1111.1010 1111.1111 | 0xFA 0xFF |
| 0xF6 | 1111.0110 | 1111.1011 1111.1110 | 0xFB 0xFE |
| 0xF7 | 1111.0111 | 1111.1011 1111.1111 | 0xFB 0xFF |
| 0xF8 | 1111.1000 | 1111.1110 1111.1010 | 0xFE 0xFA |
| 0xF9 | 1111.1001 | 1111.1110 1111.1011 | 0xFE 0xFB |
| 0xFA | 1111.1010 | 1111.1111 1111.1010 | 0xFF 0xFA |
| 0xFB | 1111.1011 | 1111.1111 1111.1011 | 0xFF 0xFB |
| 0xFC | 1111.1100 | 1111.1110 1111.1110 | 0xFE 0xFE |
| 0xFD | 1111.1101 | 1111.1110 1111.1111 | 0xFE 0xFF |
| 0xFE | 1111.1110 | 1111.1111 1111.1110 | 0xFF 0xFE |
| 0xFF | 1111.1111 | 1111.1111 1111.1111 | 0xFF 0xFF |
Close to a month prior to the shipment of the disk drive in spring 1978, Wozniak realized that a more complex encoding scheme would allow each eight-bit byte on disk to hold five bits of useful data rather than four bits. This is because there are 34 bytes which have the top bit set and no two zero bits in a row. This encoding scheme became known as 5-and-3 encoding, and allowed 13 sectors per track; it was used for Apple DOS 3.1, 3.2, and 3.2.1, as well as for the earliest version of Apple CP/M[de]:
| 5-bit value | GCR code | ||
|---|---|---|---|
| 5-bit valueGCR code hexbinbinhex 0x000.00001010.10110xAB 0x010.00011010.11010xAD 0x020.00101010.11100xAE 0x030.00111010.11110xAF 0x040.01001011.01010xB5 0x050.01011011.01100xB6 0x060.01101011.01110xB7 0x070.01111011.10100xBA 0x080.10001011.10110xBB 0x090.10011011.11010xBD 0x0A0.10101011.11100xBE 0x0B0.10111011.11110xBF 0x0C0.11001101.01100xD6 0x0D0.11011101.01110xD7 0x0E0.11101101.10100xDA 0x0F0.11111101.10110xDB | 5-bit valueGCR code hexbinbinhex 0x101.00001101.11010xDD 0x111.00011101.11100xDE 0x121.00101101.11110xDF 0x131.00111110.10100xEA 0x141.01001110.10110xEB 0x151.01011110.11010xED 0x161.01101110.11100xEE 0x171.01111110.11110xEF 0x181.10001111.01010xF5 0x191.10011111.01100xF6 0x1A1.10101111.01110xF7 0x1B1.10111111.10100xFA 0x1C1.11001111.10110xFB 0x1D1.11011111.11010xFD 0x1E1.11101111.11100xFE 0x1F1.11111111.11110xFF | ||
| hex | bin | bin | hex |
| 0x00 | 0.0000 | 1010.1011 | 0xAB |
| 0x01 | 0.0001 | 1010.1101 | 0xAD |
| 0x02 | 0.0010 | 1010.1110 | 0xAE |
| 0x03 | 0.0011 | 1010.1111 | 0xAF |
| 0x04 | 0.0100 | 1011.0101 | 0xB5 |
| 0x05 | 0.0101 | 1011.0110 | 0xB6 |
| 0x06 | 0.0110 | 1011.0111 | 0xB7 |
| 0x07 | 0.0111 | 1011.1010 | 0xBA |
| 0x08 | 0.1000 | 1011.1011 | 0xBB |
| 0x09 | 0.1001 | 1011.1101 | 0xBD |
| 0x0A | 0.1010 | 1011.1110 | 0xBE |
| 0x0B | 0.1011 | 1011.1111 | 0xBF |
| 0x0C | 0.1100 | 1101.0110 | 0xD6 |
| 0x0D | 0.1101 | 1101.0111 | 0xD7 |
| 0x0E | 0.1110 | 1101.1010 | 0xDA |
| 0x0F | 0.1111 | 1101.1011 | 0xDB |
| 5-bit value | GCR code | ||
| hex | bin | bin | hex |
| 0x10 | 1.0000 | 1101.1101 | 0xDD |
| 0x11 | 1.0001 | 1101.1110 | 0xDE |
| 0x12 | 1.0010 | 1101.1111 | 0xDF |
| 0x13 | 1.0011 | 1110.1010 | 0xEA |
| 0x14 | 1.0100 | 1110.1011 | 0xEB |
| 0x15 | 1.0101 | 1110.1101 | 0xED |
| 0x16 | 1.0110 | 1110.1110 | 0xEE |
| 0x17 | 1.0111 | 1110.1111 | 0xEF |
| 0x18 | 1.1000 | 1111.0101 | 0xF5 |
| 0x19 | 1.1001 | 1111.0110 | 0xF6 |
| 0x1A | 1.1010 | 1111.0111 | 0xF7 |
| 0x1B | 1.1011 | 1111.1010 | 0xFA |
| 0x1C | 1.1100 | 1111.1011 | 0xFB |
| 0x1D | 1.1101 | 1111.1101 | 0xFD |
| 0x1E | 1.1110 | 1111.1110 | 0xFE |
| 0x1F | 1.1111 | 1111.1111 | 0xFF |
Reserved GCR-codes: 0xAA and 0xD5.
Wozniak called the system "my most incredible experience at Apple and the finest job I did".
Later, the design of the floppy drive controller was modified to allow a byte on disk to contain up to one pair of zero bits in a row. This allowed each eight-bit byte to hold six bits of useful data, and allowed 16 sectors per track. This scheme is known as 6-and-2 encoding, and was used on Apple Pascal, Apple DOS 3.3 and ProDOS, and later with Apple FileWare drives in the Apple Lisa and the 400K and 800K 3½-inch disks on the Macintosh and Apple II. Apple did not originally call this scheme "GCR", but the term was later applied to it to distinguish it from IBM PC floppies which used the MFM encoding scheme.
| 6-bit value | GCR code | ||
|---|---|---|---|
| 6-bit valueGCR code hexbinbinhex 0x0000.00001001.01100x96 0x0100.00011001.01110x97 0x0200.00101001.10100x9A 0x0300.00111001.10110x9B 0x0400.01001001.11010x9D 0x0500.01011001.11100x9E 0x0600.01101001.11110x9F 0x0700.01111010.01100xA6 0x0800.10001010.01110xA7 0x0900.10011010.10110xAB 0x0A00.10101010.11000xAC 0x0B00.10111010.11010xAD 0x0C00.11001010.11100xAE 0x0D00.11011010.11110xAF 0x0E00.11101011.00100xB2 0x0F00.11111011.00110xB3 | 6-bit valueGCR code hexbinbinhex 0x1001.00001011.01000xB4 0x1101.00011011.01010xB5 0x1201.00101011.01100xB6 0x1301.00111011.01110xB7 0x1401.01001011.10010xB9 0x1501.01011011.10100xBA 0x1601.01101011.10110xBB 0x1701.01111011.11000xBC 0x1801.10001011.11010xBD 0x1901.10011011.11100xBE 0x1A01.10101011.11110xBF 0x1B01.10111100.10110xCB 0x1C01.11001100.11010xCD 0x1D01.11011100.11100xCE 0x1E01.11101100.11110xCF 0x1F01.11111101.00110xD3 | 6-bit valueGCR code hexbinbinhex 0x2010.00001101.01100xD6 0x2110.00011101.01110xD7 0x2210.00101101.10010xD9 0x2310.00111101.10100xDA 0x2410.01001101.10110xDB 0x2510.01011101.11000xDC 0x2610.01101101.11010xDD 0x2710.01111101.11100xDE 0x2810.10001101.11110xDF 0x2910.10011110.01010xE5 0x2A10.10101110.01100xE6 0x2B10.10111110.01110xE7 0x2C10.11001110.10010xE9 0x2D10.11011110.10100xEA 0x2E10.11101110.10110xEB 0x2F10.11111110.11000xEC | 6-bit valueGCR code hexbinbinhex 0x3011.00001110.11010xED 0x3111.00011110.11100xEE 0x3211.00101110.11110xEF 0x3311.00111111.00100xF2 0x3411.01001111.00110xF3 0x3511.01011111.01000xF4 0x3611.01101111.01010xF5 0x3711.01111111.01100xF6 0x3811.10001111.01110xF7 0x3911.10011111.10010xF9 0x3A11.10101111.10100xFA 0x3B11.10111111.10110xFB 0x3C11.11001111.11000xFC 0x3D11.11011111.11010xFD 0x3E11.11101111.11100xFE 0x3F11.11111111.11110xFF |
| hex | bin | bin | hex |
| 0x00 | 00.0000 | 1001.0110 | 0x96 |
| 0x01 | 00.0001 | 1001.0111 | 0x97 |
| 0x02 | 00.0010 | 1001.1010 | 0x9A |
| 0x03 | 00.0011 | 1001.1011 | 0x9B |
| 0x04 | 00.0100 | 1001.1101 | 0x9D |
| 0x05 | 00.0101 | 1001.1110 | 0x9E |
| 0x06 | 00.0110 | 1001.1111 | 0x9F |
| 0x07 | 00.0111 | 1010.0110 | 0xA6 |
| 0x08 | 00.1000 | 1010.0111 | 0xA7 |
| 0x09 | 00.1001 | 1010.1011 | 0xAB |
| 0x0A | 00.1010 | 1010.1100 | 0xAC |
| 0x0B | 00.1011 | 1010.1101 | 0xAD |
| 0x0C | 00.1100 | 1010.1110 | 0xAE |
| 0x0D | 00.1101 | 1010.1111 | 0xAF |
| 0x0E | 00.1110 | 1011.0010 | 0xB2 |
| 0x0F | 00.1111 | 1011.0011 | 0xB3 |
| 6-bit value | GCR code | ||
| hex | bin | bin | hex |
| 0x10 | 01.0000 | 1011.0100 | 0xB4 |
| 0x11 | 01.0001 | 1011.0101 | 0xB5 |
| 0x12 | 01.0010 | 1011.0110 | 0xB6 |
| 0x13 | 01.0011 | 1011.0111 | 0xB7 |
| 0x14 | 01.0100 | 1011.1001 | 0xB9 |
| 0x15 | 01.0101 | 1011.1010 | 0xBA |
| 0x16 | 01.0110 | 1011.1011 | 0xBB |
| 0x17 | 01.0111 | 1011.1100 | 0xBC |
| 0x18 | 01.1000 | 1011.1101 | 0xBD |
| 0x19 | 01.1001 | 1011.1110 | 0xBE |
| 0x1A | 01.1010 | 1011.1111 | 0xBF |
| 0x1B | 01.1011 | 1100.1011 | 0xCB |
| 0x1C | 01.1100 | 1100.1101 | 0xCD |
| 0x1D | 01.1101 | 1100.1110 | 0xCE |
| 0x1E | 01.1110 | 1100.1111 | 0xCF |
| 0x1F | 01.1111 | 1101.0011 | 0xD3 |
| 6-bit value | GCR code | ||
| hex | bin | bin | hex |
| 0x20 | 10.0000 | 1101.0110 | 0xD6 |
| 0x21 | 10.0001 | 1101.0111 | 0xD7 |
| 0x22 | 10.0010 | 1101.1001 | 0xD9 |
| 0x23 | 10.0011 | 1101.1010 | 0xDA |
| 0x24 | 10.0100 | 1101.1011 | 0xDB |
| 0x25 | 10.0101 | 1101.1100 | 0xDC |
| 0x26 | 10.0110 | 1101.1101 | 0xDD |
| 0x27 | 10.0111 | 1101.1110 | 0xDE |
| 0x28 | 10.1000 | 1101.1111 | 0xDF |
| 0x29 | 10.1001 | 1110.0101 | 0xE5 |
| 0x2A | 10.1010 | 1110.0110 | 0xE6 |
| 0x2B | 10.1011 | 1110.0111 | 0xE7 |
| 0x2C | 10.1100 | 1110.1001 | 0xE9 |
| 0x2D | 10.1101 | 1110.1010 | 0xEA |
| 0x2E | 10.1110 | 1110.1011 | 0xEB |
| 0x2F | 10.1111 | 1110.1100 | 0xEC |
| 6-bit value | GCR code | ||
| hex | bin | bin | hex |
| 0x30 | 11.0000 | 1110.1101 | 0xED |
| 0x31 | 11.0001 | 1110.1110 | 0xEE |
| 0x32 | 11.0010 | 1110.1111 | 0xEF |
| 0x33 | 11.0011 | 1111.0010 | 0xF2 |
| 0x34 | 11.0100 | 1111.0011 | 0xF3 |
| 0x35 | 11.0101 | 1111.0100 | 0xF4 |
| 0x36 | 11.0110 | 1111.0101 | 0xF5 |
| 0x37 | 11.0111 | 1111.0110 | 0xF6 |
| 0x38 | 11.1000 | 1111.0111 | 0xF7 |
| 0x39 | 11.1001 | 1111.1001 | 0xF9 |
| 0x3A | 11.1010 | 1111.1010 | 0xFA |
| 0x3B | 11.1011 | 1111.1011 | 0xFB |
| 0x3C | 11.1100 | 1111.1100 | 0xFC |
| 0x3D | 11.1101 | 1111.1101 | 0xFD |
| 0x3E | 11.1110 | 1111.1110 | 0xFE |
| 0x3F | 11.1111 | 1111.1111 | 0xFF |
Reserved GCR-codes: 0xAA and 0xD5.
Commodore
Independently, Commodore Business Machines (CBM) created a group coded recording scheme for their Commodore 2040 floppy disk drive (launched in the spring of 1979). The relevant constraints on the 2040 drive were that no more than two zero bits could occur in a row; the drive imposed no special constraint on the first bit in a byte. This allowed the use of a scheme similar to that used in 6250bpi tape drives. Every four bits of data are translated into five bits on disk, using the same 5-bit codes as IBM to ensure there are never more than two zero bits in a row, but in a different order:
| 4-bit value | GCR code | ||
|---|---|---|---|
| 4-bit valueGCR code hexbinbinhex 0x000000.10100x0A 0x100010.10110x0B 0x200101.00100x12 0x300111.00110x13 0x401000.11100x0E 0x501010.11110x0F 0x601101.01100x16 0x701111.01110x17 | 4-bit valueGCR code hexbinbinhex 0x810000.10010x09 0x910011.10010x19 0xA10101.10100x1A 0xB10111.10110x1B 0xC11000.11010x0D 0xD11011.11010x1D 0xE11101.11100x1E 0xF11111.01010x15 | ||
| hex | bin | bin | hex |
| 0x0 | 0000 | 0.1010 | 0x0A |
| 0x1 | 0001 | 0.1011 | 0x0B |
| 0x2 | 0010 | 1.0010 | 0x12 |
| 0x3 | 0011 | 1.0011 | 0x13 |
| 0x4 | 0100 | 0.1110 | 0x0E |
| 0x5 | 0101 | 0.1111 | 0x0F |
| 0x6 | 0110 | 1.0110 | 0x16 |
| 0x7 | 0111 | 1.0111 | 0x17 |
| 4-bit value | GCR code | ||
| hex | bin | bin | hex |
| 0x8 | 1000 | 0.1001 | 0x09 |
| 0x9 | 1001 | 1.1001 | 0x19 |
| 0xA | 1010 | 1.1010 | 0x1A |
| 0xB | 1011 | 1.1011 | 0x1B |
| 0xC | 1100 | 0.1101 | 0x0D |
| 0xD | 1101 | 1.1101 | 0x1D |
| 0xE | 1110 | 1.1110 | 0x1E |
| 0xF | 1111 | 1.0101 | 0x15 |
Like the IBM code, at most eight one bits in a row are possible, so Commodore used sequences of ten or more one bits in a row as a synchronization sequence.
This more efficient GCR scheme, combined with an approach at constant bit-density recording by gradually increasing the clock rate (zone constant angular velocity, ZCAV) and storing more physical sectors on the outer tracks than on the inner ones (zone bit recording, ZBR), enabled Commodore to fit 170KiB on a standard single-sided single-density 5.25-inch floppy, where Apple fit 140KiB (with 6-and-2 encoding) or 114KiB (with 5-and-3 encoding) and an FM-encoded floppy held only 88KiB.
Sirius/Victor
Similar, the 5.25-inch floppy drives of the Victor9000 aka Sirius1, designed by Chuck Peddle in 1981/1982, used a combination of GCR and zone bit recording by gradually decreasing a drive's rotational speed for the outer tracks in nine zones while increasing the number of sectors per track to achieve formatted capacities of 606KiB (single sided) / 1188KiB (double-sided) on 96 tpi media. The GCR code is identical to the Commodore one.
Brother
Starting around 1985, Brother introduced a family of dedicated word processor typewriters with integrated 3.5-inch 38-track diskette drive. Early models of the WP and LW series[de] used a Brother-specific group-coded recording scheme with twelve 256-byte sectors to store up to 120KB on single-sided and up to 240KB on double-sided double-density (DD) diskettes. Reportedly, prototypes were already shown at the Internationale Funkausstellung 1979 (IFA) in Berlin.
Sharp
In 1986, Sharp introduced a turnable 2.5-inch pocket disk drive solution (drives: CE-1600F, CE-140F; internally based on the FDU-250 chassis; media: CE-1650F) for their series of pocket computers with a formatted capacity of 62464 bytes per side (2× 64kB nominal, 16 tracks, 8 sectors/track, 512bytes per sector, 48 tpi, 250kbit/s, 270rpm) with GCR (4/5) recording.
Other uses
GCR was also evaluated for a possible use in bar code encoding schemes (packing efficiency, timing tolerances, amount of storage bytes for timing information, and DC output level).
See also
- 4B5B, another rate-4/5 code, but with looser (0,3) RLL constraints
- 8b/10b encoding, a rate-4/5 (0,4) RLL code, which is also DC balanced
- Modified Frequency Modulation (MFM)
- Run Length Limited (RLL)
- Eight-to-Fourteen Modulation (EFM)
- Error-correcting code
- Group code
- Integrated Woz Machine (IWM, a GCR disk controller in Apple computers)
- Paula (MOS Technology 8364, a GCR-capable disk controller in Commodore Amiga computers)
- Individual Computers Catweasel (a special diskette controller able to read some GCR formats)
- KryoFlux (a special diskette controller able to read some GCR formats)
Notes
Further reading
- ANSI INCITS 40-1993 (R2003) Unrecorded Magnetic Tape for Information Interchange (9-track, 800bpi, NRZI; 1600bpi, PE; and 6250bpi, GCR)
- ANSI INCITS 54-1986 (R2002) Recorded Magnetic Tape for Information Interchange (6250bpi, GCR)
- Sallet, Herbert W. (July 1977). "Magnetic tape: A high performer: Magnetic tape has evolved into a highly effective medium for high-density and low-cost-per-bit data recording". IEEE Spectrum. 14 (7): 26–31. doi:.
- Sidhu, Pawitter S. (December 1976). "Group-Coded Recording Reliably Doubles Diskette Capacity". Computer Design: 84–88.
- "(unknown)". Perkin-Elmer Data Systems News. Perkin-Elmer Data Systems. 1977-06-14.
{{cite journal}}:Cite uses generic title (help) - Hsiao, (Ben) M. Y.; Carter, William C.; Thomas, James W.; Stringfellow, William R. (September 1981). "Reliability, Availability, and Serviceability of IBM Computer Systems". IBM Journal of Research and Development. 25 (5): 462. doi:. (NB. Mentions the 5/4 RLL code used on 6250bpi tape drives.)
- (PDF) (Revision Jed.). Canoga Park, CA, USA: Qualstar Corporation. pp.3-4..3-7. 500450. Archived from (PDF) on 2011-09-30. (NB. Additional detail on the GCR tape format.)
- ,Agrawala, Ashok K.&Srivastava, Keshava,"Block encoding for magnetic recording systems",published 1972-08-15, assigned to Honeywell Inc. (NB. Application No: US 66199. See also: CA993998A, CA993998A1, DE2142428A1)
- ,Wozniak, Stephen G.,"Controller for magnetic disc, recorder, or the like",published 1980-07-01, assigned to Apple Computer, Inc. (NB. Application Number: US 5/904420)
- ,Woolley, Richard N.; Glover, Neal& Williams, Richard,"Error detection system",published 1986-01-14, assigned to Apple Computer, Inc. (NB. Application Number: US 06/559210. See also: CA1208794A, CA1208794A1, DE3443272A1, DE3443272C2)
- Dockery, Sean Brendan. . Archived from on 2016-01-05.
- (PDF). 2.0 preliminary. NEC Corporation. October 1991. Archived from (PDF) on 2017-03-20.
- Åkesson, Linus (2013-03-31). . from the original on 2017-03-21.
- Trikaliotis, Spiro (2010-03-05). . Archived from on 2014-08-05.
- . Forum 64. from the original on 2010-03-12.
- Irwin, John W.; Cassie, John V.; Oppeboen, Harlyn C. (September 1971) [1970-12-11]. "The IBM 3803/3420 Magnetic Tape Subsystem". IBM Journal of Research and Development. IBM: 391–400. CiteSeerX.
- Docket (June 2014). . from the original on 2018-07-09.
- . Big Mess O' Wires (BMOW) – Plus Too. 2011-10-02. from the original on 2018-07-09.
- Dickreiter, Michael; Dittel, Volker; Hoeg, Wolfgang; Wöhr, Martin (2014). (in German). Walter de Gruyter GmbH & Co KG. ISBN978-3-11-031650-6. ISBN3-11031650-1.
- Bergmans, Jan W. M. (2013-03-09) [1996]. "Chapter 4.8.3 Group-Coded Recording (GCR) Code". (reprinted.). Philips Research, Eindhoven, Netherlands: Kluwer Academic Publishers / Springer Science+Business Media. doi:. ISBN978-1-4419-5164-9.
- Camras, Marvin (2012) [1988]. (reprinted.). Van Nostrand Reinhold Company / Springer Science+Business Media. doi:. ISBN978-9-40109468-9. LCCN. ISBN9-40109468-3.
- . Computerworld. XIII (19). Louisville, Colorado, USA: CW Communications/Inc.: 59. 1979-05-07.
External links
- (in French). from the original on 2018-07-09., (in French). from the original on 2017-03-22., (in French). from the original on 2018-07-09.