# EIA-608

EIA-608, also known as "Line 21 captions" and "CEA-608", is a standard for closed captioning for NTSC TV broadcasts in the United States, Canada and Mexico. It was developed by the Electronic Industries Alliance and required by law to be implemented in most television receivers made in the United States.
It specifies an "Extended Data Service", which is a means for including a VCR control service with an electronic program guide for NTSC transmissions that operates on the even Line 21 field, similar to the TeleText based VPS that operates on line 16 which is used in PAL countries.
EIA-608 captions are transmitted on either the odd or even fields of Line 21 with an odd parity bit in the non-visible active video data area in NTSC broadcasts, and are also sometimes present in the picture user data in ATSC transmissions. It uses a fixed bandwidth of 480 bit/s per Line 21 field for a maximum of 32 characters per line per caption (maximum four lines) for a 30 frame broadcast. The odd field captions relate to the primary audio track and the even field captions related to the SAP or secondary audio track which is generally a second language translation of the primary audio, such as a French or Spanish translation of an English-speaking TV show.
Raw EIA-608 caption byte pairs are becoming less prevalent as digital television replaces analog. ATSC broadcasts instead use the EIA-708 caption protocol to encapsulate both the EIA-608 caption pairs as well as add a native EIA-708 stream. EIA-608 has had revisions with the addition of extended character sets to fully support the representation of the Spanish, French, German languages, and cross section of other Western European languages. EIA-608 was also extended to support two byte characters for the Korean and Japanese markets. The full version of EIA-708 has support for more character sets and better caption positioning options; however, because of existing EIA-608 hardware and revisions to the format, there has been little or no real world use of the format besides simple 608 to 708 inline conversions.

## Channels

EIA-608 defines four channels of caption information, so that a program could, for example, have captions in four different languages. There are two channels, called 1 and 2 by the standard, in each of the two fields of a frame. The channels are often presented to users numbered simply as CC1-2 for the odd field and CC3-4 for the even field. Due to bandwidth limitations on either field, CC1 and CC3 are the only ones used, meaning that there has been little use for the second channel. Early Spanish SAP captioned broadcasts first used the second channel CC2 because the original caption decoders only read the first odd field, but later switched to using CC3 for bandwidth reasons. Due to the same bandwidth reasons XDS was never used by Spanish-speaking stations.
Within each channel, there are two streams of information which might be considered sub-channels: one carries "captions" and the other "text". The latter is not in common use due to the lack of hardware support and bandwidth available. Text is signaled by the use of text commands and can be used for a formatted URL string with a 16-bit checksum that designates a web site that the captions relate to or a local station communication channel.
This layering is based on the OSI Protocol Reference Model:
| CC Layers | OSI Layers | DVB/MXF Layers | Comments |
| | Application | Interpretation | Issuing commands and appending text to rows |
| | Presentation | Coding | Breaking up individual commands and characters |
| | Session | Channel | Channel Byte Stream |
| | -- | Selection | CC channel assembly from CC byte pairs |
| Injection | Transport | Synchronization | CC byte pairs extracted/synchronized with/from video frames |
| | Network | unused | directly connected link |
| | Link | | video frames or VBI data split from link format |
| TV SDI or DVD | Physical | | link format demodulated/retrieved from transmission/source |

## DVD GOP user data insertion

The user data structure that follows a H.262 GOP header is as follows (the same would apply after an ISO/IEC 14496-2 GOP header):
| Length | Name | Type | Default |
| 32 bits | user_data_start_code | patterned bslbf | 0x000001B2 |
| 16 bits | user_identifier | ASCII bslbf | CC |
| 8 bits | user_data_type_code | uimsbf | 1 |
| 8 bits | caption_block_size | inverted uimsbf | 0xf8 |
| 1 bit | caption_odd_field_first | flag | 1 |
| 1 bit | caption_filler | alignment | 0 |
| 5 bits | caption_block_count | uimsbf | 15 |
| 1 bit | caption_extra_field_added | flag | 0 |
| X*24 bits | caption_block | binary | free form |
bslbf: bit string, left bit first ; uimsbf: unsigned integer, most significant bit first
Caption blocks are inserted after the sequence and GOP headers, so each block is for one second of video which would end up being one or two long lines or three to four short lines of text. Also that means if the caption_block_count is greater than 30 then the block contains both interleaved caption fields and one could devise the framing rate from the caption_block_count. However since the data is grouped together the framing rate will almost always be 30/1.001, unlike the ATSC method that inserts one byte pair for each field after the picture header making framing rates of 24/1.001 possible for HD content. Since when a decoder does a 3:2 pull-down for NTSC output the captions will remain in sync.
DVD Caption Block :
| Length | Name | Type | Default |
| 7 bits | caption_filler | alignment | 0x7f |
| 1 bit | caption_odd_field | uimsbf | 1 or 0 |
| 8 bits | caption_first_byte | odd parity uimsbf | 0x80 |
| 8 bits | caption_second_byte | odd parity uimsbf | 0x80 |

## DVB transport insertion

The packet-ed structure that is inserted before the H.222 video packet is as follows for a frame of associated video:
| Length | Name | Type | Default |
| 32 bits | private_stream_1_start_code | patterned bslbf | 0x000001BD |
| 16 bits | PES_packet_length | uimsbf | 176 |
| 2 bits | PES_version | uimsbf | 2 |
| 1 bit | PES_priority | flag | 0 |
| 2 bits | PES_scrambling_control | uimsbf | 0 |
| 1 bit | data_alignment_indicator | flag | 1 |
| 2 bits | copyright original | uimsbf | 0 |
| 2 bits | PTS_DTS_flag | uimsbf | 2 |
| 6 bits | various_PES_flags | uimsbf | 0 |
| 8 bits | PES_header_data_length | uimsbf | 36 |
| 40 bits | PTS | uimsbf | varies |
| 248 bits | stuffing_bytes | uimsbf | 255 |
| 8 bits | data_identifier | uimsbf | 153 |
| 8 bits | data_unit_id | uimsbf | 197 |
| 8 bits | data_unit_length | uimsbf | 3 |
| 2 bits | reserved_future_use | uimsbf | 3 |
| 1 bit | field_parity (CC1/2) | flag | 0 |
| 5 bits | line_offset | uimsbf | 21 |
| 16 bits | closed_captioning_data_block | uimsbf | 608 caption |
| 8 bits | data_unit_id | uimsbf | 197 |
| 8 bits | data_unit_length | uimsbf | 3 |
| 2 bits | reserved_future_use | uimsbf | 3 |
| 1 bit | field_parity (CC3/4/XDS) | flag | 1 |
| 5 bits | line_offset | uimsbf | 21 |
| 16 bits | closed_captioning_data_block | uimsbf | 608 caption |
| 8 bits | data_unit_id | uimsbf | 255 |
| 8 bits | data_unit_length | uimsbf | 124 |
| 124*8 bits | stuffing_bytes | uimsbf | 255 |
bslbf: bit string, left bit first ; uimsbf: unsigned integer, most significant bit first
This structure was designed for any digital VBI data and was optimized to carry three or more 43-byte Teletext packets. e.g. a page header and two associated lines. For Teletext subtitles, the data_unit_id is set to 3. In this form, captions have to be separated into byte pairs spread over frames in one second of video rather than grouped into one block as with the DVD structure. The same is true for Teletext subtitles with more than one line of text.

## SDI/MXF SMPTE 291M insertion

The packet-ed structure that is inserted before the SMPTE 259M active video frame or MXF essence video packet is coded as follows for a frame of associated video:
| Length | Name | Type | Default |
| 16 or 128 bits | ancillary_flag or ancillary_header | patterned bslbf or 7 uimsbf | 0xFFFF or varies |
| 8 bits | data_id | uimsbf | 97 |
| 8 bits | secondary_data_id | uimsbf | 2 |
| 8 bits | data_count | uimsbf | varies |
| X*24 bits | caption_data_block | binary | free form |
bslbf: bit string, left bit first ; uimsbf: unsigned integer, most significant bit first
This structure was designed for any digital audio or metadata that is to be synchronized with a video frame. SDI transports every eight bits in a 10 bit aligned packet, unlike MXF which is byte aligned and the ancillary flag bytes are replaced by 128 bit header.
SDI/MXF Caption Block :
| Length | Name | Type | Default |
| 1 bit | caption_odd_field (CC1/2 = 1; CC3/4 = 0) | flag | 1 |
| 2 bits | caption_reserved | uimsbf | 0 |
| 5 bits | caption_line_offset | uimsbf | 15 |
| 8 bits | caption_first_byte | odd parity uimsbf | 0x80 |
| 8 bits | caption_second_byte | odd parity uimsbf | 0x80 |

## Extended Data Service

The EIA-608 data stream format includes Extended Data Service (XDS), a variety of information about the transmission. It is all optional,:
* program name
* offensiveness rating (violence, sex, etc.)
* program category (drama, game show, etc.)

## Characters

There are three sets of characters that the EIA-608 stream can direct the receiver to display: basic characters, special characters, and extended characters. A single two-byte EIA-608 command (represented by a single VBI line) can specify two basic characters, one special character, or one extended character.
Extended characters are a later addition to the standard and their decoding is optional.
EIA-608 provides controls for the color of the foreground and background of the text, underlining, blinking, and italics. The default color scheme is white characters on a black background, all opaque.
The Transparent Space special character implies a transparent background even in the absence of any background control commands. As the foreground of this character is a blank space, it really means a gap in the close caption text.
In these examples

### Non-caption data

This is used to either pad out the field line when no captions are sent or for the eXtended Data Service.

### Basic North American character set

A command with bits 13 or 14 on directs the receiver to display two basic characters at the current cursor position for the current mode (closed caption or text). Each character is a code point (identifies the character to display), as follows.
The code is almost identical to ASCII; the exceptions are shown in red.
| Binary | Decimal | Hex | Glyph |
| 0010 0000 | 32 | 20 | (SP) |
| 0010 0001 | 33 | 21 | ! |
| 0010 0010 | 34 | 22 | " |
| 0010 0011 | 35 | 23 | # |
| 0010 0100 | 36 | 24 | $ |
| 0010 0101 | 37 | 25 | % |
| 0010 0110 | 38 | 26 | & |
| 0010 0111 | 39 | 27 | ’ |
| 0010 1000 | 40 | 28 | ( |
| 0010 1001 | 41 | 29 | ) |
| 0010 1010 | 42 | 2A | á |
| 0010 1011 | 43 | 2B | + |
| 0010 1100 | 44 | 2C | , |
| 0010 1101 | 45 | 2D | - |
| 0010 1110 | 46 | 2E | . |
| 0010 1111 | 47 | 2F | / |
| 0011 0000 | 48 | 30 | 0 |
| 0011 0001 | 49 | 31 | 1 |
| 0011 0010 | 50 | 32 | 2 |
| 0011 0011 | 51 | 33 | 3 |
| 0011 0100 | 52 | 34 | 4 |
| 0011 0101 | 53 | 35 | 5 |
| 0011 0110 | 54 | 36 | 6 |
| 0011 0111 | 55 | 37 | 7 |
| 0011 1000 | 56 | 38 | 8 |
| 0011 1001 | 57 | 39 | 9 |
| 0011 1010 | 58 | 3A | : |
| 0011 1011 | 59 | 3B | ; |
| 0011 1100 | 60 | 3C | < |
| 0011 1101 | 61 | 3D | = |
| 0011 1110 | 62 | 3E | > |
| 0011 1111 | 63 | 3F | ? |
| Binary | Decimal | Hex | Glyph |
| 0100 0000 | 64 | 40 | @ |
| 0100 0001 | 65 | 41 | A |
| 0100 0010 | 66 | 42 | B |
| 0100 0011 | 67 | 43 | C |
| 0100 0100 | 68 | 44 | D |
| 0100 0101 | 69 | 45 | E |
| 0100 0110 | 70 | 46 | F |
| 0100 0111 | 71 | 47 | G |
| 0100 1000 | 72 | 48 | H |
| 0100 1001 | 73 | 49 | I |
| 0100 1010 | 74 | 4A | J |
| 0100 1011 | 75 | 4B | K |
| 0100 1100 | 76 | 4C | L |
| 0100 1101 | 77 | 4D | M |
| 0100 1110 | 78 | 4E | N |
| 0100 1111 | 79 | 4F | O |
| 0101 0000 | 80 | 50 | P |
| 0101 0001 | 81 | 51 | Q |
| 0101 0010 | 82 | 52 | R |
| 0101 0011 | 83 | 53 | S |
| 0101 0100 | 84 | 54 | T |
| 0101 0101 | 85 | 55 | U |
| 0101 0110 | 86 | 56 | V |
| 0101 0111 | 87 | 57 | W |
| 0101 1000 | 88 | 58 | X |
| 0101 1001 | 89 | 59 | Y |
| 0101 1010 | 90 | 5A | Z |
| 0101 1011 | 91 | 5B | [ |
| 0101 1100 | 92 | 5C | é |
| 0101 1101 | 93 | 5D | ] |
| 0101 1110 | 94 | 5E | í |
| 0101 1111 | 95 | 5F | ó |
| Binary | Decimal | Hex | Glyph |
| 0110 0000 | 96 | 60 | ú |
| 0110 0001 | 97 | 61 | a |
| 0110 0010 | 98 | 62 | b |
| 0110 0011 | 99 | 63 | c |
| 0110 0100 | 100 | 64 | d |
| 0110 0101 | 101 | 65 | e |
| 0110 0110 | 102 | 66 | f |
| 0110 0111 | 103 | 67 | g |
| 0110 1000 | 104 | 68 | h |
| 0110 1001 | 105 | 69 | i |
| 0110 1010 | 106 | 6A | j |
| 0110 1011 | 107 | 6B | k |
| 0110 1100 | 108 | 6C | l |
| 0110 1101 | 109 | 6D | m |
| 0110 1110 | 110 | 6E | n |
| 0110 1111 | 111 | 6F | o |
| 0111 0000 | 112 | 70 | p |
| 0111 0001 | 113 | 71 | q |
| 0111 0010 | 114 | 72 | r |
| 0111 0011 | 115 | 73 | s |
| 0111 0100 | 116 | 74 | t |
| 0111 0101 | 117 | 75 | u |
| 0111 0110 | 118 | 76 | v |
| 0111 0111 | 119 | 77 | w |
| 0111 1000 | 120 | 78 | x |
| 0111 1001 | 121 | 79 | y |
| 0111 1010 | 122 | 7A | z |
| 0111 1011 | 123 | 7B | ç |
| 0111 1100 | 124 | 7C | ÷ |
| 0111 1101 | 125 | 7D | Ñ |
| 0111 1110 | 126 | 7E | ñ |
| 0111 1111 | 127 | 7F | SB |
In the table, SB represents a solid block. The apostrophe (code 27), which may originally have been intended to be a neutral apostrophe as in ASCII, is recommended to be rendered as a right single quotation mark (Unicode U+2019). For a neutral single quote/apostrophe, the plain single quote from the extended character set should be used.

### Special North American character set

The only typical use in North America of this set is the use of the eighth note character to denote changes from spoken dialogue to singing or musical only scenes.
It is an acceptable broadcast engineering practice when translating EIA-608 to Teletext for PAL compatible countries to substitute this character for a number sign because of its similarity to a sharp.
A command to display a special character has a first byte of 0x11 or 0x19 (depending upon channel). The second byte is a code point in the range 0x30–0x3F as follows.
| Binary | Decimal | Hex | Glyph |
| 0011 0000 | 48 | 30 | ® |
| 0011 0001 | 49 | 31 | ° |
| 0011 0010 | 50 | 32 | ½ |
| 0011 0011 | 51 | 33 | ¿ |
| 0011 0100 | 52 | 34 | ™ |
| 0011 0101 | 53 | 35 | ¢ |
| 0011 0110 | 54 | 36 | £ |
| 0011 0111 | 55 | 37 | ♪ |
| 0011 1000 | 56 | 38 | à |
| 0011 1001 | 57 | 39 | TS |
| 0011 1010 | 58 | 3A | è |
| 0011 1011 | 59 | 3B | â |
| 0011 1100 | 60 | 3C | ê |
| 0011 1101 | 61 | 3D | î |
| 0011 1110 | 62 | 3E | ô |
| 0011 1111 | 63 | 3F | û |
TM is short for unregistered trademark and should be represented in superscript (like the Unicode character U+2122 ™ TRADE MARK SIGN). TS in the table above represents a "transparent space" or non-breaking space. Finally, the Eighth note (♪) is used to denote singing or background music in captions.

### Extended Western European character set

These extended character sets are rarely used due to most European countries using the BBC Ceefax based Teletext system.
The Ceefax system is more prone to character errors due to the greater number of data bits (337 versus 16) encoded per VBI field, these errors occur either on noise prone analog transmissions or connections.
* A command to display an extended Spanish/French or miscellaneous character has a first byte of 0x12 or 0x1A (depending upon channel).
* A command to display an extended Portuguese/German/Danish character has a first byte of 0x13 or 0x1B (depending upon channel).
The second byte is a code point in the range 0x20-0x3F is as follows
Extended Spanish/Miscellaneous :
| Extended Spanish/Miscellaneous Binary Decimal Hex Glyph 0010 0000 32 20 Á 0010 0001 33 21 É 0010 0010 34 22 Ó 0010 0011 35 23 Ú 0010 0100 36 24 Ü 0010 0101 37 25 ü 0010 0110 38 26 ‘ 0010 0111 39 27 ¡ 0010 1000 40 28 * 0010 1001 41 29 ' 0010 1010 42 2A ─ 0010 1011 43 2B © 0010 1100 44 2C ℠ 0010 1101 45 2D · 0010 1110 46 2E “ 0010 1111 47 2F ” | Extended French Binary Decimal Hex Glyph 0011 0000 48 30 À 0011 0001 49 31 Â 0011 0010 50 32 Ç 0011 0011 51 33 È 0011 0100 52 34 Ê 0011 0101 53 35 Ë 0011 0110 54 36 ë 0011 0111 55 37 Î 0011 1000 56 38 Ï 0011 1001 57 39 ï 0011 1010 58 3A Ô 0011 1011 59 3B Ù 0011 1100 60 3C ù 0011 1101 61 3D Û 0011 1110 62 3E « 0011 1111 63 3F » | Portuguese Binary Decimal Hex Glyph 0010 0000 32 20 Ã 0010 0001 33 21 ã 0010 0010 34 22 Í 0010 0011 35 23 Ì 0010 0100 36 24 ì 0010 0101 37 25 Ò 0010 0110 38 26 ò 0010 0111 39 27 Õ 0010 1000 40 28 õ 0010 1001 41 29 { 0010 1010 42 2A } 0010 1011 43 2B \ 0010 1100 44 2C ^ 0010 1101 45 2D _ 0010 1110 46 2E | 0010 1111 47 2F ~ | German/Danish Binary Decimal Hex Glyph 0011 0000 48 30 Ä 0011 0001 49 31 ä 0011 0010 50 32 Ö 0011 0011 51 33 ö 0011 0100 52 34 ß 0011 0101 53 35 ¥ 0011 0110 54 36 ¤ 0011 0111 55 37 │ 0011 1000 56 38 Å 0011 1001 57 39 å 0011 1010 58 3A Ø 0011 1011 59 3B ø 0011 1100 60 3C ┌ 0011 1101 61 3D ┐ 0011 1110 62 3E └ 0011 1111 63 3F ┘ |
SM is short for service mark and should be represented in superscript (like Unicode character U+2120 ℠ SERVICE MARK). The single quote mark is a curly left and double quote marks are curly left and right. The plus signs refer to top left, top right, lower left and lower right corners for box drawing.

## Non-Western Norpak character sets

When used all standard and extended character sets are unused in favor of the following predefined sets, care must be taken to not emulate any control commands. This is an extension submitted to the CEC by Norpak who made a similar extension to the Teletext format for the Chinese market. The main use has been to provide double byte code point captioning to the Japanese, Taiwanese and South Korean markets. A command to switch character sets has a first byte of 0x17 or 0x1F (depending upon channel). The second byte is a character set reference in the range 0x24-0x2A as follows
| Binary | Decimal | Hex | Set in Use |
| 0010 0100 | 36 | 24 | Standard |
| 0010 0101 | 37 | 25 | Standard Double Height |
| 0010 0110 | 38 | 26 | Decoder Specific 1 |
| 0010 0111 | 39 | 27 | Decoder Specific 2 |
| 0010 1000 | 40 | 28 | China's GB 2312 (1980) |
| 0010 1001 | 41 | 29 | Korea's KS C 5601 (1987) |
| 0010 1010 | 42 | 2A | Loadable |

## Control commands

Bits 15 and 7 are always odd parity bits. Bit 11 is always the channel bit.
Preamble address code with masking bit 15,11 and 7 as already defined above can be interpreted from following table
| bits | interpretation |
| 14-13 | always 0 |
| 12 | always 1 |
| 10-8 | row position indicator |
| 6 | always 1 |
| 5 | row position indicator |
| 4-1 | text attribute indicator |
| 0 | underline indicator |
The row bits specify which of the fifteen screen rows should contain the caption text: row 11 (0000), 1 (0010), 2 (0011), 3, 4, 12, 13, 14, 15, 5, 6, 7, 8, 9, or 10 (1111).
The attributes bits allow 16 possibilities, which are: white (0000), green, blue, cyan, red, yellow, magenta, italics, indent 0, indent 4, indent 8, indent 12, indent 16, indent 20, indent 24, indent 28 (1111).
For a midrow code these are as follows: Bits 14, 13, 10, 9, 6 and 4 are always 0, bits 12, 8 and 5 are always 1. Bits 3, 2 and 1 form the color attribute 0001X10X(see the listing of attributes). Bit 0 indicates underline.
For other control codes these are as follows: Bits 14, 13, 9, 6 and 4 are always 0, bits 12, 10 and 5 are always 1. Bit 8 chooses between Line 21 and 284. Bits 3, 2, 1 and 0 identify the particular action.
The command bits allow 16 possibilities, which are: resume caption loading (0000), backspace (0001), delete to end of row (0100), roll-up captions 2-rows, roll-up captions 3 rows, roll-up captions 4-rows, flash on (0.25 seconds once per second), resume direct captioning, text restart, resume text display, erase displayed memory, carriage return, erase nondisplayed memory, end of caption (1111).
For tabs these are as follows: Bits 14, 13, 6, 4, 3, 2 are always 0, bits 12, 10, 9, 8, 5 are always 1. Bits 1 and 0 determine the number of tab offsets.
Considering parity bit already ignored hex value have of 2 byte data is following command:
| cc_data 0 (hex) | cc_data 0 (binary) | cc_data 1 (hex) | cc_data 1 (binary) | Command |
| 0x14 (CC1) or 0x1c (CC2) or 0x15 (CC3) or 0x1D (CC4) | 0001C10F | 0x20 | 00100000 | resume caption loading (start buffered caption text) |
| 0x14 (CC1) or 0x1c (CC2) or 0x15 (CC3) or 0x1D (CC4) | 0001C10F | 0x21 | 00100001 | backspace (overwrite last char) |
| 0x14 (CC1) or 0x1c (CC2) or 0x15 (CC3) or 0x1D (CC4) | 0001C10F | 0x22 | 00100010 | alarm off (unused) |
| 0x14 (CC1) or 0x1c (CC2) or 0x15 (CC3) or 0x1D (CC4) | 0001C10F | 0x23 | 00100011 | alarm on (unused) |
| 0x14 (CC1) or 0x1c (CC2) or 0x15 (CC3) or 0x1D (CC4) | 0001C10F | 0x24 | 00100100 | delete to end of row (clear line) |
| 0x14 (CC1) or 0x1c (CC2) or 0x15 (CC3) or 0x1D (CC4) | 0001C10F | 0x25 | 00100101 | roll up 2 (scroll size) |
| 0x14 (CC1) or 0x1c (CC2) or 0x15 (CC3) or 0x1D (CC4) | 0001C10F | 0x26 | 00100110 | roll up 3 (scroll size) |
| 0x14 (CC1) or 0x1c (CC2) or 0x15 (CC3) or 0x1D (CC4) | 0001C10F | 0x27 | 00100111 | roll up 4 (scroll size) |
| 0x14 (CC1) or 0x1c (CC2) or 0x15 (CC3) or 0x1D (CC4) | 0001C10F | 0x28 | 00101000 | flashes captions on (0.25 seconds once per second) |
| 0x14 (CC1) or 0x1c (CC2) or 0x15 (CC3) or 0x1D (CC4) | 0001C10F | 0x29 | 00101001 | resume direct captioning (start caption text) |
| 0x14 (TXT1) or 0x1c (TXT2) or 0x15 (TXT3) or 0x1D (TXT4) | 0001C10F | 0x2A | 00101010 | text restart (start non-caption text) |
| 0x14 (TXT1) or 0x1c (TXT2) or 0x15 (TXT3) or 0x1D (TXT4) | 0001C10F | 0x2B | 00101011 | resume text display (resume non-caption text) |
| 0x14 (CC1) or 0x1c (CC2) or 0x15 (CC3) or 0x1D (CC4) | 0001C10F | 0x2C | 00101100 | erase display memory (clear screen) |
| 0x14 (CC1) or 0x1c (CC2) or 0x15 (CC3) or 0x1D (CC4) | 0001C10F | 0x2D | 00101101 | carriage return (scroll lines up) |
| 0x14 (CC1) or 0x1c (CC2) or 0x15 (CC3) or 0x1D (CC4) | 0001C10F | 0x2E | 00101110 | erase non displayed memory (clear buffer) |
| 0x14 (CC1) or 0x1c (CC2) or 0x15 (CC3) or 0x1D (CC4) | 0001C10F | 0x2F | 00101111 | end of caption (display buffer) |
| 0x17 (CC1/3) or 0x1F (CC2/4) | 0001C111 | 0x21 | 00100001 | tab offset 1 (add spacing) |
| 0x17 (CC1/3) or 0x1F (CC2/4) | 0001C111 | 0x22 | 00100010 | tab offset 2 (add spacing) |
| 0x17 (CC1/3) or 0x1F (CC2/4) | 0001C111 | 0x23 | 00100011 | tab offset 3 (add spacing) |