### Closed Caption Disassembly Documentation: XDS

Extended Data Service is transmitted on channel CC3 (also known as channel 1 of Line 284). Its most common consumer use is to provide the program ratings used by the V-chip.

Each XDS packet consists of a Class (1 byte), a Type (1 byte), and Content (up to 32 bytes), followed by 0x40 if necessary to keep the total number of bytes even, followed by 0x8f and then a 1-byte checksum (computed so that the sum of all of the bytes in the packet is evenly divisible by 0x80, 128 decimal; also note that all bytes have the high bit set or cleared in order to have an odd number of bits set in each byte, and all non-character data bytes have bit 6 set as well). NOTE: CCASDI will compute the checksum when going from CCD to SCC, but needs to know that the packet will not be continued, so if you wish to take advantage of this, be sure to end the XDS packet with `\C`.

XDS is designed to be fit in between other caption data; for that reason, XDS packets can be interrupted at any time and later resumed.

XDS types are grouped into seven classes. The Current class describes the program currently being transmitted. The Future class has all of the same types as the Current class and describes any program to be transmitted in the future on the same channel. The Channel class describes the channel being tuned. The Miscellaneous class is for information that applies to all channels. The Public Service class is used for emergency messages that need to supercede all other classes. The Reserved class currently has no function. Finally, the Undefined class is for any custom use the decoder manufacturer wishes.

Here is a list of types by class, followed by their definitions:

CURRENT AND FUTURE CLASSES
  Start Time/Program ID
  Program Length/Time in Show
  Program Name (shows example of packet interruption for Current Class)
  Program Types (shows example of packet interruption for Future Class)
  Program Rating (V-Chip)
  Audio Streams
  Caption Streams
  Copy Generation Management System
  Program Aspect Ratio
  Program Data (an optional combination type)
  Miscellaneous Data (an optional combination type)
  Program Description (actually 8 types, for 8 lines of data)
CHANNEL CLASS
  Network Name (shows example of packet interruption for Channel Class)
  Network Call Letters
  Channel Tape Delay
  Transmission Signal Identifier
MISCELLANEOUS CLASS
  Time of Day
  Impulse Capture ID (used for programming VCRs to record a show)
  Supplemental Data Location
  Local Time Zone
  Out of Band Channel
  Channel Map Pointer
  Channel Map Header
  Channel Map (shows example of packet interruption for Miscellaneous Class)
PUBLIC SERVICE CLASS
  National Weather Service Bulletin
  National Weather Service Message (shows example of packet interruption for Public Service Class)
RESERVED CLASS
UNDEFINED CLASS
ALL CLASSES
  Undocumented Type

CURRENT AND FUTURE CLASSES
Start codes for Current and Future classes are 0x01 and 0x83. Continue codes are 0x02 and 0x04.

Start Time/Program ID
Example CCD:
    00:01:01:00	{XDS Cs ST 18:30D ZTA Dec 06 \C5d}
               	     |   |  |  || |||  |   |   |
               	     1   2  3  45 678  9   1   1
               	                           0   1
SCC:
    00:01:01:00	0101 5ef2 467c 8f5d
Field | Name | Explanation
--- | --- | ---
1 | Class Start | Class of `C`urrent or `F`uture `s`tart (byte 1 = 0x01 for Current start, 0x83 for Future start).
2 | Type | The Start Time/Program ID Type (byte 2 = 0x01).
3 | Hour | Hour in UTC when program starts (UTC is London's time zone--subtract four hours to get Eastern Time, eight hours to get Pacific Time), from 00 (Midnight) to 23 (11 PM) (byte 4 + 0x40 + Field 5 below).
4 | Minute | Minute program starts (usually 0 or 30), from 00 to 59 (byte 3 + 0x40).
5 | DST | Currently in `D`aylight Savings Time, or `S`tandard Time (add 0x20 to byte 4 if `D`). This field is usually ignored by the decoder.
6 | Zero Seconds | This is either `_` for unknown seconds or `Z` for zero seconds (add 0x20 to byte 6 if `Z`).
7 | Tape Delay | Program is tape delayed (`T`) or is not (`N`) for Pacific and Mountain time zones (add 0x10 to byte 6 if `T`). See the Channel Tape Delay packet for the size of the delay.
8 | Leap Day | If this is February 29th, then this is `L` for Leap Day, otherwise, this is `A` (add 0x20 to byte 5 if `L`). This field is usually ignored by the decoder.
9 | Month | Month program starts: `Jan`uary, `Feb`ruary, `Mar`ch, `Apr`il, `May`, `Jun`e, `Jul`y, `Aug`ust, `Sep`tember, `Oct`ober, `Nov`ember or `Dec`ember (byte 6 = 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a or 0x4b for `Jan` through `Dec`, then add in Fields 6 and 7 above).
10 | Day | Day of Month, from 1 to 31 (byte 5 + 0x40 + Field 8 above).
11 | Checksum | Checksum, in hexidecimal (bytes 7 and 8 are 0x8f and checksum byte).
N | Class Continue | Class of `C`urrent or `F`uture `c`ontinue, applied at any time packet has to be continued after an interruption (byte N = 0x02 for Current continue, 0x04 for Future continue).
N+1 | Type Continue | Same value as Type (field 2). This is followed by the rest of the interrupted packet (with Checksum same as if there had been no interruption).
Program Length/Time in Show
Example CCD:
    00:01:02:00	{XDS Fs PL 02:30 01:45:30 \C80}
               	      |  |  |  |  |  |  |   |
               	      1  2  3  4  5  6  7   8
SCC:
    00:01:02:00	8302 5ec2 6dc1 5e40 8f80
Field | Name | Explanation
1 | Class | Class of `C`urrent or `F`uture `s`tart (byte 1 = 0x01 for Current start, 0x83 for Future start).
2 | Type | The Program Length/Time in Show Type (byte 2 = 0x02).
3 | Hours Long | Hour portion of Program Length, from 00 to 63 (byte 4 + 0x40).
4 | Minutes Long | Minute portion of Program Length, from 00 to 59 (byte 3 + 0x40).
5 | Hours Elapsed | (Optional) Hour portion of Time Elapsed in Show, from 00 to 63 (byte 6 + 0x40).
6 | Minutes Elapsed | (Optional unless Hours Elapsed is used) Minute portion of Time Elapsed in Show, from 00 to 59 (byte 5 + 0x40).
7 | Seconds Elapsed | (Optional even when Hours Elapsed is used) Seconds portion of Time Elapsed in Show, from 00 to 59 (but only updated every 8 seconds) (byte 7 + 0x40). If this field is used, it must be followed by the filler byte 0x40.
8 | Checksum | Checksum, in hexidecimal (last two bytes are 0x8f and checksum byte).
N | Class Continue | Class of `C`urrent or `F`uture `c`ontinue, applied at any time packet has to be continued after an interruption (byte N = 0x02 for Current continue, 0x04 for Future continue).
N+1 | Type Continue | Same value as Type (field 2). This is followed by the rest of the interrupted packet (with Checksum same as if there had been no interruption).
Program Name
Example CCD:
    CHANNEL 3
    00:01:03:00	{XDS Cs PN Days of }
               	      |  |     |
               	      1  2     3
    00:01:03:05	{EDM}{EDM}
    00:01:03:07	{XDS Cc PN Our Lives \Cae}
               	      |  |     |       |
               	      N N+1    3       4
SCC:
    00:01:03:00	0183 c461 7973 20ef e620

    00:01:03:05	152c 152c

    00:01:03:07	0283 4f75 f220 4ce9 76e5 7340 8fae
Field | Name | Explanation
1 | Class | Class of `C`urrent or `F`uture `s`tart (byte 1 = 0x01 for Current start, 0x83 for Future start).
2 | Type | The Program Name Type (byte 2 = 0x83).
3 | Program Name | The name of the program (bytes 3 and up, from 2 to 32 characters, using closed caption character set).
4 | Checksum | Checksum, in hexidecimal (last two bytes are 0x8f and checksum byte).
N | Class Continue | Class of `C`urrent or `F`uture `c`ontinue, applied at any time packet has to be continued after an interruption (byte N = 0x02 for Current continue, 0x04 for Future continue).
N+1 | Type Continue | Same value as Type (field 2). This is followed by the rest of the interrupted packet (with Checksum same as if there had been no interruption).
Program Types
Example CCD:
    00:01:04:00	{XDS Fs PT Entertainment Drama Repeat Romance Series Soap_Opera \Cc8}
               	      |  |      |          |      |      |       |        |       |
               	      1  2      3          3      3      3       3        3       4
SCC:
    00:01:04:00	8304 a1bc 6e70 f275 8fc8
Field | Name | Explanation
1 | Class | Class of `C`urrent or `F`uture `s`tart (byte 1 = 0x01 for Current start, 0x83 for Future start).
2 | Type | The Program Types Type (byte 2 = 0x04).
3 | Code | From 2 to 32 codes describing the program (bytes 3 and up, using the following lookup:)
Code | Program Type
--- | ---
0x20 | Education
0xa1 | Entertainment
0xa2 | Movie
0x23 | News
0xa4 | Religious
0x25 | Sports
0x26 | Other
0xa7 | Action
0xa8 | Advertisement
0x29 | Animated
0x2a | Anthology
0xab | Automobile
0x2c | Awards
0xad | Baseball
0xae | Basketball
0x2f | Bulletin
0xb0 | Business
0x31 | Classical
0x32 | College
0xb3 | Combat
0x34 | Comedy
0xb5 | Commentary
0xb6 | Concert
0x37 | Consumer
0x38 | Contemporary
0xb9 | Crime
0xba | Dance
0x3b | Documentary
0xbc | Drama
0x3d | Elementary
0x3e | Erotica
0xbf | Exercise
0x40 | Fantasy
0xc1 | Farm
0xc2 | Fashion
0x43 | Fiction
0xc4 | Food
0x45 | Football
0x46 | Foreign
0xc7 | Fund-Raiser
0xc8 | Game/Quiz
0x49 | Garden
0x4a | Golf
0xcb | Government
0x4c | Health
0xcd | High_School
0xce | History
0x4f | Hobby
Code | Program Type
--- | ---
0xd0 | Hockey
0x51 | Home
0x52 | Horror
0xd3 | Information
0x54 | Instruction
0xd5 | International
0xd6 | Interview
0x57 | Language
0x58 | Legal
0xd9 | Live
0xda | Local
0x5b | Math
0xdc | Medical
0x5d | Meeting
0x5e | Military
0xdf | Mini-Series
0xe0 | Music
0x61 | Mystery
0x62 | National
0xe3 | Nature
0x64 | Police
0xe5 | Politics
0xe6 | Premiere
0x67 | Pre-Recorded
0x68 | Product
0xe9 | Professional
0xea | Public
0x6b | Racing
0xec | Reading
0x6d | Repair
0x6e | Repeat
0xef | Review
0x70 | Romance
0xf1 | Science
0xf2 | Series
0x73 | Service
0xf4 | Shopping
0x75 | Soap_Opera
0x76 | Special
0xf7 | Suspense
0xf8 | Talk
0x79 | Technical
0x7a | Tennis
0xfb | Travel
0x7c | Variety
0xfd | Video
0xfe | Weather
0x7f | Western
4 | Checksum | Checksum, in hexidecimal (last two bytes are 0x8f and checksum byte).
N | Class Continue | Class of `C`urrent or `F`uture `c`ontinue, applied at any time packet has to be continued after an interruption (byte N = 0x02 for Current continue, 0x04 for Future continue).
N+1 | Type Continue | Same value as Type (field 2). This is followed by the rest of the interrupted packet (with Checksum same as if there had been no interruption).
Program Rating (V-Chip)
Example CCD:
    00:01:05:00	{XDS Cs PR TPG TV-14 DL_V \C16}
               	      |  |  |    |   ||||   |
               	      1  2  3    4   5678   9
SCC:
    00:01:05:00	0185 686d 8f16
Field | Name | Explanation
1 | Class | Class of `C`urrent or `F`uture `s`tart (byte 1 = 0x01 for Current start, 0x83 for Future start).
2 | Type | The Program Rating Type (byte 2 = 0x85).
3 | System | The Rating System used: `MPAA` for Motion Picture Association of America (U.S. movie ratings), `TPG` for Television Parental Guidelines (U.S. television ratings), `CE` for Canada English, or `CF` for Canada Français (add 0x00, 0x08, 0x18, or 0x38 to byte 3 for `MPAA`, `TPG`, `CE`, or `CF`).
4 | Rating | The actual Rating, explained below:
MPAA Ratings
Rating | Explanation | Byte 3 | Byte 4
G | General Audiences - All ages admitted | 0x41 | 0x40
PG | Parental Guidance Suggested - Some material may not be suitable for children | 0x42 | 0x40
PG-13 | Parents Strongly Cautioned - Some material may be inappropriate for children under 13 | 0x43 | 0x40
R | Restricted - Under 17 requires accompanying parent or adult guardian | 0x44 | 0x40
NC-17 | No one 17 and under admitted | 0x45 | 0x40
X | No one under 17 admitted (no longer used) | 0x46 | 0x40
NR | Not Rated | 0x47 | 0x40
TPG Ratings
Rating | Explanation | Byte 3 | Byte 4
None | No rating (no content advisory) | 0x40 | 0x40
TV-Y | All Children (no content advisory) | 0x40 | 0x41
TV-Y7 | Directed to Older Children (V = Fantasy Violence) | 0x40 | 0x42
TV-G | General Audience (no content advisory) | 0x40 | 0x43
TV-PG | Parental Guidance Suggested (V = moderate Violence, S=some Sexual situations, L=infrequent coarse Language, D=some suggestive Dialog) | 0x40 | 0x44
TV-14 | Parents Strongly Cautioned (V = intense Violence, S=intense Sexual situations, L=strong coarse Language, D=intensely suggestive Dialog) | 0x40 | 0x45
TV-MA | Mature Audience Only (V = graphic Violence, S=explicit Sexual activity, L=crude indecent Language) | 0x40 | 0x46
None | No rating (no content advisory) | 0x40 | 0x47
CE Ratings
Rating | Explanation | Byte 3 | Byte 4
E | Exempt | 0x40 | 0x40
C | Children | 0x40 | 0x41
C8+ | Children 8 and older | 0x40 | 0x42
G | General audience | 0x40 | 0x43
PG | Parental Guidance | 0x40 | 0x44
14+ | Viewers 14 and older | 0x40 | 0x45
18+ | Adult programming | 0x40 | 0x46
CF Ratings
Rating | Explanation | Byte 3 | Byte 4
E | Exemptées | 0x40 | 0x40
G | Général | 0x40 | 0x41
8+ | Général - Déconseillé aux jeunes enfants | 0x40 | 0x42
13+ | Ne convient pas aux moins de 13 ans | 0x40 | 0x43
16+ | Ne convient pas aux moins de 16 ans | 0x40 | 0x44
18+ | Réeservée aux adultes | 0x40 | 0x45

5 Dialog Advisory(TPG System only) Warns that program contains sexually-suggestive `D`ialog (add 0x20 to byte 3).
6 Language Advisory(TPG System only) Warns that program contains coarse `L`anguage (i.e. swearing) (add 0x08 to byte 4).
7 Sex Advisory(TPG System only) Warns that program contains `S`exual situations (add 0x10 to byte 4).
8 Violence Advisory(TPG System only) Warns that program contains `V`iolent content (add 0x20 to byte 4).
9 Checksum Checksum, in hexidecimal (bytes 5 and 6 are 0x8f and checksum byte).
N Class Continue Class of `C`urrent or `F`uture `c`ontinue, applied at any time packet has to be continued after an interruption (byte N = 0x02 for Current continue, 0x04 for Future continue).
N+1 Type Continue Same value as Type (field 2). This is followed by the rest of the interrupted packet (with Checksum same as if there had been no interruption).
Audio Streams
Example CCD:

    00:01:06:00	{XDS Fs AS Stereo English DAS Deutsch \C3b}
               	      |  |    |      |     |     |      |
               	      1  2    3      4     5     6      7

SCC:

    00:01:06:00	8386 cb62 8f3b

Field Name Explanation
1 Class Class of `C`urrent or `F`uture `s`tart (byte 1 = 0x01 for Current start, 0x83 for Future start).
2 Type The Audio Streams Type (byte 2 = 0x86).
3 Main Type Main Audio Type: `Unknown`, `Mono`, `Simulated` (for Simulated Stereo), `Stereo`, `Surround` (for Surround Stereo), `Data` (for Data Service), `Other` or `None` (byte 3 = 0x40 for `Unknown`, 0x41 for `Mono`, and so on up to 0x47 for `None`).
4 Main Language Language of Main Audio Stream: `Unknown`, `English`, `Español`, `Français`, `Deutsch`, `Italiano`, `Other` or `None` (add 0x00, 0x08, 0x10, 0x18, 0x20, 0x28, 0x30 or 0x38 to byte 3 for `Unknown` through `None`).
5 Second Type Second Audio Type (NTSC is capable of supporting two simultaneous audio streams, selectable by the TV remote control): `Unknown`, `Mono`, `DAS` (Descriptive Audio Service for the blind), `Non-Program` (i.e. unrelated to the video content), `FX` (for Special Effects), `Data` (for Data Service), `Other` or `None` (byte 4 = 0x40 for `Unknown`, 0x41 for `Mono`, and so on up to 0x47 for `None`).
6 Second Language Language of Second Audio Stream: `Unknown`, `English`, `Español`, `Français`, `Deutsch`, `Italiano`, `Other` or `None` (add 0x00, 0x08, 0x10, 0x18, 0x20, 0x28, 0x30 or 0x38 to byte 4 for `Unknown` through `None`).
7 Checksum Checksum, in hexidecimal (bytes 5 and 6 are 0x8f and checksum byte).
N Class Continue Class of `C`urrent or `F`uture `c`ontinue, applied at any time packet has to be continued after an interruption (byte N = 0x02 for Current continue, 0x04 for Future continue).
N+1 Type Continue Same value as Type (field 2). This is followed by the rest of the interrupted packet (with Checksum same as if there had been no interruption).
Caption Streams
Example CCD:

    00:01:07:00	{XDS Cs CS CC1 English CC2 Español T1 Deutsch T2 Other \Cab}
               	      |  |  |     |     |     |     |    |     |   |     |
               	      1  2  3     4     3     4     3    4     3   4     5

SCC:

    00:01:07:00	0107 c852 6143 8fab

Field Name Explanation
1 Class Class of `C`urrent or `F`uture `s`tart (byte 1 = 0x01 for Current start, 0x83 for Future start).
2 Type The Caption Streams Type (byte 2 = 0x07).
3 Stream Name of the Stream being described: `CC1` through `CC4` or `T1` through `T4` (bytes 3 and up = 0x40, 0x42, 0x44, 0x46 for `CC1` through `CC4` or 0x41, 0x43, 0x45, 0x47 for `T1` through `T4`). From 2 to 8 streams can be described.
4 Stream Language Language of the Stream: `Unknown`, `English`, `Español`, `Français`, `Deutsch`, `Italiano`, `Other` or `None` (add 0x00, 0x08, 0x10, 0x18, 0x20, 0x28, 0x30 or 0x38 to byte for `Unknown` through `None`).
5 Checksum Checksum, in hexidecimal (last two bytes are 0x8f and checksum byte).
N Class Continue Class of `C`urrent or `F`uture `c`ontinue, applied at any time packet has to be continued after an interruption (byte N = 0x02 for Current continue, 0x04 for Future continue).
N+1 Type Continue Same value as Type (field 2). This is followed by the rest of the interrupted packet (with Checksum same as if there had been no interruption).
Copy Generation Management System
Example CCD:

    00:01:08:00	{XDS Fs CG A02 \C49}
               	      |  | |||   |
               	      1  2 345   6

SCC:

    00:01:08:00	8308 5d40 8f49

Field Name Explanation
1 Class Class of `C`urrent or `F`uture `s`tart (byte 1 = 0x01 for Current start, 0x83 for Future start).
2 Type The Copy Generation Management System Type (byte 2 = 0x08).
3 Analog Source: `A` for Analog or `D` for Digital (byte 3 = 0x41 for `A` or 0x40 for `D`).
4 SCMS Serial Copy-generation Management System: `U` to allow signal to be copied unlimited times, `0` to instruct digital recording devices to prohibit recording of the signal (automatically adds Content Scrambling System) or `1` to allow signal to be copied with the copy's SCMS set to `0` (add 0x18 to byte 3 if `0` or 0x10 if `1`).
5 Macrovision(Always `N` unless SCMS is `0`): `N` for no pseudo-sync pulse in the Vertical Blanking Interval, `M` for pseudo-sync pulse (called Analog Protection System or Macrovision) with no rapidly-modulated Colorstripe in the Horizontal Blanking Interval, `2` for Macrovision plus 2-line Colorstripe or `4` for Macrovision plus 4-line Colorstripe (add 0x02 to byte 3 if `M`, 0x04 if `2` or 0x06 if `4`).
6 Checksum Checksum, in hexidecimal (bytes 5 and 6 are 0x8f and checksum byte).
N Class Continue Class of `C`urrent or `F`uture `c`ontinue, applied at any time packet has to be continued after an interruption (byte N = 0x02 for Current continue, 0x04 for Future continue).
N+1 Type Continue Same value as Type (field 2). This is followed by the rest of the interrupted packet (with Checksum same as if there had been no interruption).
Program Aspect Ratio
Example CCD:

    00:01:09:00	{XDS Cs AR 30 30 A \C2a}
               	      |  |  |  | |   |
               	      1  2  3  4 5   6

SCC:

    00:01:09:00	0189 5e5e c140 8f2a

Field Name Explanation
1 Class Class of `C`urrent or `F`uture `s`tart (byte 1 = 0x01 for Current start, 0x83 for Future start).
2 Type The Aspect Ratio Type (byte 2 = 0x89).
3 Top Number of Scanlines from top of visible video area (Line 22) to top of active video area (i.e. after any letterboxing), from 0 to 63, with common values given below (byte 3 plus 0x40).

TV Ratio | Video Ratio | Top | Bottom
--- | --- | --- | ---
4:3 | 4:3 | 0 | 0
16:9 | 30 | 30
2.35:1 | 50 | 50
16:9 | 4:3 | 0 | 0
16:9 | 0 | 0
2.35:1 | 30 | 30

4 Bottom Number of Scanlines from bottom of visible video area (Line 263) to bottom of active video area, from 0 to 63; this is usually the same as Top (see table above) (byte 4 plus 0x40).
5 Anamorphic(Optional) Flag for whether 16:9 video has been squeezed to 4:3 ratio (to be "unsqueezed" by 16:9 television sets) (byte 5 = 0x40 for `_` or 0xc1 for `A`).
6 Checksum Checksum, in hexidecimal (last two bytes are 0x8f and checksum byte).
N Class Continue Class of `C`urrent or `F`uture `c`ontinue, applied at any time packet has to be continued after an interruption (byte N = 0x02 for Current continue, 0x04 for Future continue).
N+1 Type Continue Same value as Type (field 2). This is followed by the rest of the interrupted packet (with Checksum same as if there had been no interruption).
Program Data
Example CCD:

    00:01:10:00	{XDS Fs PD Movie Drama Sports Romance}
               	      |  |   |     |      |      |
               	      1  2   3     3      3      3
    00:01:10:03	{EDM}{EDM}
    00:01:10:05	{XDS Fc PD Music PG-13 02:30 01:45 Endless Summer \C97}
               	      |  |   |     |    |  |  |  |        |         |
               	      N N+1  3     4    5  6  7  8        9        10

SCC:

    00:01:10:00	838c a2bc 2570

    00:01:10:03	152c 152c

    00:01:10:05	048c e043 e0c2 6dc1 456e 64ec e573 7320 d375 6d6d e5f2 8f97

Field Name Explanation
1 Class Class of `C`urrent or `F`uture `s`tart (byte 1 = 0x01 for Current start, 0x83 for Future start).
2 Type The Program Data Type (byte 2 = 8c).
3 Code Exactly 5 codes describing the program (bytes 3 through 7, using the lookup from Program Types above).
4 Rating MPAA Rating (byte 8, using the Byte 3 lookup from Program Rating above: 0x41 for G, 0x42 for PG, etc).
5 Hours Long Hour portion of Program Length, from 00 to 60 (byte 10 + 0x40).
6 Minutes Long Minute portion of Program Length, from 00 to 59 (byte 9 + 0x40).
7 Hours Elapsed(Optional) Hour portion of Time Elapsed in Show, from 00 to 60 (byte 12 + 0x40).
8 Minutes Elapsed(Optional unless Hours Elapsed is used) Minute portion of Time Elapsed in Show, from 00 to 59 (byte 11 + 0x40).
9 Program Name The name of the program (bytes 13 and up, up to 22 characters, using closed caption character set).
10 Checksum Checksum, in hexidecimal (last two bytes are 0x8f and checksum byte).
N Class Continue Class of `C`urrent or `F`uture `c`ontinue, applied at any time packet has to be continued after an interruption (byte N = 0x02 for Current continue, 0x04 for Future continue).
N+1 Type Continue Same value as Type (field 2). This is followed by the rest of the interrupted packet (with Checksum same as if there had been no interruption).
Miscellaneous Data
Example CCD:

    00:01:11:00	{XDS Cs MD 18:30 T Dec 06 Mono English DAS Other}
               	      |  |  |  | |  |   |   |     |     |    |
               	      1  2  3  4 5  6   7   8     9    10   11
    00:01:11:04	{EDM}{EDM}
    00:01:11:06	{XDS Cc MD CC1 English T1 Other SCIF __ \C38}
               	      |  |  |     |     |   |     |   |   |
               	      N N+1 12   13    12  13    14  15  16

SCC:

    00:01:11:00	010d 5e52 46dc 49f2

    00:01:11:04	152c 152c

    00:01:11:06	020d c8f1 d343 4946 2020 8f38

Field Name Explanation
1 Class Class of `C`urrent or `F`uture `s`tart (byte 1 = 0x01 for Current start, 0x83 for Future start).
2 Type The Miscellaneous Data Type (byte 2 = 0d).
3 Hour Hour in UTC when program starts (UTC is London's time zone--subtract four hours to get Eastern Time, eight hours to get Pacific Time), from 00 (Midnight) to 23 (11 PM) (byte 4 + 0x40).
4 Minute Minute program starts (usually 0 or 30), from 00 to 59 (byte 3 + 0x40).
5 Delay Program is tape delayed (`T`) or is not (`N`) for Pacific and Mountain time zones (add 0x10 to byte 6 if `T`).
6 Month Month program starts: `Jan`uary, `Feb`ruary, `Mar`ch, `Apr`il, `May`, `Jun`e, `Jul`y, `Aug`ust, `Sep`tember, `Oct`ober, `Nov`ember or `Dec`ember (byte 6 = 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a or 0x4b for `Jan` through `Dec`, then add in Field 5 above).
7 Day Day of Month, from 1 to 31 (byte 5 + 0x40).
8 Main Audio Type Main Audio Type: `Unknown`, `Mono`, `Simulated` (for Simulated Stereo), `Stereo`, `Surround` (for Surround Stereo), `Data` (for Data Service), `Other` or `None` (byte 7 = 0x40 for `Unknown`, 0x41 for `Mono`, and so on up to 0x47 for `None`).
9 Main Audio Language Language of Main Audio Stream: `Unknown`, `English`, `Español`, `Français`, `Deutsch`, `Italiano`, `Other` or `None` (add 0x00, 0x08, 0x10, 0x18, 0x20, 0x28, 0x30 or 0x38 to byte 7 for `Unknown` through `None`).
10 Second Audio Type Second Audio Type (NTSC is capable of supporting two simultaneous audio streams, selectable by the TV remote control): `Unknown`, `Mono`, `DAS` (Descriptive Audio Service for the blind), `Non-Program` (i.e. unrelated to the video content), `FX` (for Special Effects), `Data` (for Data Service), `Other` or `None` (byte 8 = 0x40 for `Unknown`, 0x41 for `Mono`, and so on up to 0x47 for `None`).
11 Second Audio Language Language of Second Audio Stream: `Unknown`, `English`, `Español`, `Français`, `Deutsch`, `Italiano`, `Other` or `None` (add 0x00, 0x08, 0x10, 0x18, 0x20, 0x28, 0x30 or 0x38 to byte 8 for `Unknown` through `None`).
12 Caption Stream Names of the two streams being described: `CC1` through `CC4` or `T1` through `T4` (bytes 9 and 10 = 0x40, 0x42, 0x44, 0x46 for `CC1` through `CC4` or 0x41, 0x43, 0x45, 0x47 for `T1` through `T4`).
13 Caption Stream Language Languages of the streams: `Unknown`, `English`, `Español`, `Français`, `Deutsch`, `Italiano`, `Other` or `None` (add 0x00, 0x08, 0x10, 0x18, 0x20, 0x28, 0x30 or 0x38 to bytes 9 and 10 for `Unknown` through `None`).
14 Call Letters Call Letters of the Network or Channel, 4 characters (bytes 11 through 14, using closed caption character set).
15 Broadcast Channel Broadcast channel number, from 02 to 69, or __ if no broadcast channel (bytes 15 and 16, converting each digit using closed caption character set; "__" is encoded as two space characters).
16 Checksum Checksum, in hexidecimal (bytes 17 and 18 are 0x8f and checksum byte).
N Class Continue Class of `C`urrent or `F`uture `c`ontinue, applied at any time packet has to be continued after an interruption (byte N = 0x02 for Current continue, 0x04 for Future continue).
N+1 Type Continue Same value as Type (field 2). This is followed by the rest of the interrupted packet (with Checksum same as if there had been no interruption).
Program Description (up to eight lines)
Example CCD:

    00:01:12:00	{XDS Fs D1 Dennis Quaid; }
               	      |  |        |
               	      1  2        3
    00:01:12:08	{EDM}{EDM}
    00:01:12:10	{XDS Fc D1 Benny "Boom Boom" \C34}
               	      |  |         |            |
               	      N N+1        3            4

SCC:

    00:01:12:00	8310 c4e5 6e6e e973 2051 7561 e964 3b20

    00:01:12:08	152c 152c

    00:01:12:10	0410 c2e5 6e6e 7920 a2c2 efef 6d20 c2ef ef6d a240 8f34

Field Name Explanation
1 Class Class of `C`urrent or `F`uture `s`tart (byte 1 = 0x01 for Current start, 0x83 for Future start).
2 Type The Program Description Type (byte 2 = 0x10, 0x91, 0x92, 0x13, 0x94, 0x15, 0x16 or 0x97 for lines 1, 2, 3, 4, 5, 6, 7 or 8).
3 Description From 0 to 32 characters describing the program (byte 3 and up, using closed caption character set). Generating a Program Description packet with an empty Description field will create a blank line.
4 Checksum Checksum, in hexidecimal (last two bytes are 0x8f and checksum byte).
N Class Continue Class of `C`urrent or `F`uture `c`ontinue, applied at any time packet has to be continued after an interruption (byte N = 0x02 for Current continue, 0x04 for Future continue).
N+1 Type Continue Same value as Type (field 2). This is followed by the rest of the interrupted packet (with Checksum same as if there had been no interruption).

CHANNEL CLASS
Start code for Channel class is 0x85. Continue code is 0x86.

Network Name
Example CCD:
    00:03:01:00	{XDS Hs NN Sci-Fi Channel}
               	      |  |        |
               	      1  2        3
    00:03:01:08	{EDM}{EDM}
    00:03:01:10	{XDS Hc NN  Pacific \Cc8}
               	      |  |    |      |
               	      N N+1   3      4
SCC:
    00:03:01:00	8501 d3e3 e9ad 46e9 2043 6861 6e6e e5ec

    00:03:01:08	152c 152c

    00:03:01:10	8601 20d0 61e3 e9e6 e9e3 8fc8
Field | Name | Explanation
--- | --- | ---
1 | Class | Class of C`H`annel `s`tart (byte 1 = 0x85).
2 | Type | The Network Name Type (byte 2 = 0x01).
3 | Name | Name of the Network or Channel, from 2 to 32 characters (bytes 3 and up, using closed caption character set).
4 | Checksum | Checksum, in hexidecimal (last two bytes are 0x8f and checksum byte).
N | Class Continue | Class of C`H`annel `c`ontinue (byte N = 0x86).
N+1 | Type Continue | Same value as Type (field 2). This is followed by the rest of the interrupted packet (with Checksum same as if there had been no interruption).
Network Call Letters
Example CCD:
    00:03:02:00	{XDS Hs NC KCRA 03 \Ce6}
               	      |  |   |   |   |
               	      1  2   3   4   5
SCC:
    00:03:02:00	8502 cb43 52c1 b0b3 8fe6
Field | Name | Explanation
1 | Class | Class of C`H`annel `s`tart (byte 1 = 0x85).
2 | Type | The Network Call Letters Type (byte 2 = 0x02).
3 | Call Letters | Call Letters of the Channel, 4 letters (bytes 3 through 6, using closed caption character set).
4 | Broadcast Channel | (Optional) Broadcast channel number, from 02 to 69 (bytes 7 and 8, converting each digit using closed caption character set).
5 | Checksum | Checksum, in hexidecimal (last two bytes are 0x8f and checksum byte).
N | Class Continue | Class of C`H`annel `c`ontinue (byte N = 0x86).
N+1 | Type Continue | Same value as Type (field 2). This is followed by the rest of the interrupted packet (with Checksum same as if there had been no interruption).
Channel Tape Delay
Example CCD:
    00:03:03:00	{XDS Hs TD 04:00 \Ce5}
               	      |  |  |  |   |
               	      1  2  3  4   5
SSC:
    00:03:03:00	8583 40c4 8fe5
Field | Name | Explanation
1 | Class | Class of C`H`annel `s`tart (byte 1 = 0x85).
2 | Type | The Channel Tape Delay Type (byte 2 = 0x83).
3 | Hours | Number of Hours that channel programming is delayed after live broadcast when `T` is set in Start Time packet, from 0 to 23 (usually 4 for Pacific time zone) (byte 4 plus 0x40).
4 | Minutes | Number of additional Minutes that channel programming is delayed after live broadcast when `T` is set in Start Time packet, from 0 to 59 (usually 0) (byte 3 plus 0x40).
5 | Checksum | Checksum, in hexidecimal (bytes 5 and 6 are 0x8f and checksum byte).
N | Class Continue | Class of C`H`annel `c`ontinue (byte N = 0x86).
N+1 | Type Continue | Same value as Type (field 2). This is followed by the rest of the interrupted packet (with Checksum same as if there had been no interruption).
Transmission Signal Identifier
Example CCD:
    00:03:04:00	{XDS Hs TS 16e8 \Ccb}
               	      |  |   |    |
               	      1  2   3    4
SCC:
    00:03:04:00	8504 c8ce 46c1 8fcb
Field | Name | Explanation
1 | Class | Class of C`H`annel `s`tart (byte 1 = 0x85).
2 | Type | The TSID Type (byte 2 = 0x04).
3 | TSID | Hexidecimal ID assigned to this channel, from 0001 to ffff (take digits in reverse order to get bytes 3 - 6, adding 0x40 to each).
4 | Checksum | Checksum, in hexidecimal (bytes 7 and 8 are 0x8f and checksum byte).
N | Class Continue | Class of C`H`annel `c`ontinue (byte N = 0x86).
N+1 | Type Continue | Same value as Type (field 2). This is followed by the rest of the interrupted packet (with Checksum same as if there had been no interruption).

MISCELLANEOUS CLASS
Start code for Miscellaneous class is 0x07. Continue code is 0x08.

Time of Day
Example CCD:
    00:04:01:00	{XDS Ms TM 18:36S ZTA Dec 06 2002 Fri \Cdf}
               	      |  |  |  || |||  |   |   |   |    |
               	      1  2  3  45 678  9   1   1   1    1
               	                           0   1   2    3
SCC:
    00:04:01:00	0701 6452 467c 464c 8fdf
Field | Name | Explanation
--- | --- | ---
1 | Class | Class of `M`iscellaneous `s`tart (byte 1 = 0x07).
2 | Type | The Time of Day Type (byte 2 = 0x01).
3 | Hour | Hour in UTC (UTC is London's time zone--subtract four hours to get Eastern Time, eight hours to get Pacific Time; note that date and Day of Week are also UTC), from 00 (Midnight) to 23 (11 PM) (byte 4 plus 0x40, plus Field 5).
4 | Minute | Minute, from 00 to 59 (byte 3 plus 0x40).
5 | DST | Currently in `D`aylight Savings Time, or `S`tandard Time (add 0x20 to byte 4 if `D`).
6 | Zero Seconds | This is either `_` for unknown seconds or `Z` for zero seconds (Time of Day is transmitted every eight seconds, at least by Public Broadcasting System channels in the U.S.) (add 0x20 to byte 6 for `Z`).
7 | Tape Delay | Is the current program being tape-delayed: `T` for delayed, `S` for simulcast (Note that Time of Day is transmitted by the local station, not the national network, which means this signal should always be accurate) (add 0x10 to byte 6 if `T`).
8 | Leap Day | If this is February 29th, then this is `L` for Leap Day, otherwise, this is `A` (add 0x20 to byte 5 if `L`).
9 | Month | Month: `Jan`uary, `Feb`ruary, `Mar`ch, `Apr`il, `May`, `Jun`e, `Jul`y, `Aug`ust, `Sep`tember, `Oct`ober, `Nov`ember or `Dec`ember (byte 6 = 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a or 0x4b for `Jan` through `Dec`, plus Fields 6 and 7).
10 | Day | Day of Month, from 01 to 31 (byte 5 plus 0x40, plus Field 8).
11 | Year | Year, from 1990 to 2053 (byte 8 minus 1990 plus 0x40).
12 | Weekday | The Day of the Week: `Sun`day, `Mon`day, `Tue`sday, `Wed`nesday, `Thu`rsday, `Fri`day or `Sat`urday (byte 7 = 0xc1, 0x42, 0x43, 0xc4, 0x45, 0x46 or 0xc7 for `Sun` through `Sat`).
13 | Checksum | Checksum, in hexidecimal (bytes 9 and 10 are 0x8f and checksum byte).
N | Class Continue | Class of `M`iscellaneous `c`ontinue (byte N = 0x08).
N+1 | Type Continue | Same value as Type (field 2). This is followed by the rest of the interrupted packet (with Checksum same as if there had been no interruption).
Impulse Capture ID (used to tell VCRs how long to record a program)
Example CCD:
    00:04:02:00	{XDS Ms IC 18:36S ZTA Dec 06 02:30 \Cd0}
               	      |  |  |  || |||  |   |  |  |   |
               	      1  2  3  45 678  9   1  1  1   1
               	                           0  1  2   3
SCC:
    00:04:02:00	0702 6452 467c 5ec2 8fd0
Field | Name | Explanation
1 | Class | Class of `M`iscellaneous `s`tart (byte 1 = 0x07).
2 | Type | The Impulse Capture ID Type (byte 2 = 0x02).
3 | Hour | Hour in UTC (UTC is London's time zone--subtract four hours to get Eastern Time, eight hours to get Pacific Time; note that date and Day of Week are also UTC), from 00 (Midnight) to 23 (11 PM) to receive program (byte 4 plus 0x40, plus Field 5).
4 | Minute | Minute, from 00 to 59 to receive program (byte 3 plus 0x40).
5 | DST | Currently in `D`aylight Savings Time, or `S`tandard Time (add 0x20 to byte 4 if `D`). Ignored by decoder.
6 | Zero Seconds | This is either `_` for unknown seconds or `Z` for zero seconds (add 0x20 to byte 6 for `Z`). Ignored by decoder.
7 | Tape Delay | Is the current program being tape-delayed: `T` for delayed, `S` for simulcast (add 0x10 to byte 6 if `T`).
8 | Leap Day | If this is February 29th, then this is `L` for Leap Day, otherwise, this is `A` (add 0x20 to byte 5 if `L`). Ignored by decoder.
9 | Month | Month: `Jan`uary, `Feb`ruary, `Mar`ch, `Apr`il, `May`, `Jun`e, `Jul`y, `Aug`ust, `Sep`tember, `Oct`ober, `Nov`ember or `Dec`ember (byte 6 = 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a or 0x4b for `Jan` through `Dec`, plus Fields 6 and 7).
10 | Day | Day of Month, from 01 to 31 (byte 5 plus 0x40, plus Field 8).
11 | Hours Long | Hour portion of program length, from 00 to 63 (byte 8 + 0x40).
12 | Minutes Long | Minute portion of program length, from 00 to 59 (byte 7 + 0x40).
13 | Checksum | Checksum, in hexidecimal (bytes 9 and 10 are 0x8f and checksum byte).
N | Class Continue | Class of `M`iscellaneous `c`ontinue (byte N = 0x08).
N+1 | Type Continue | Same value as Type (field 2). This is followed by the rest of the interrupted packet (with Checksum same as if there had been no interruption).
Supplemental Data Location
Example CCD:
    00:04:03:00	{XDS Ms SD 20.1 18.2 \Ca1}
               	      |  |  | |  | |   |
               	      1  2  3 4  3 4   5
SCC:
    00:04:03:00	0783 54f2 8fa1
Field | Name | Explanation
1 | Class | Class of `M`iscellaneous `s`tart (byte 1 = 0x07).
2 | Type | The Supplemental Data Location Type (byte 2 = 0x83).
3 | Line | Scanline in the top Vertical Blanking Interval to find supplemental data, from 10 to 20 (there can be 2 to 32 of these, each including the Field in field 4) (bytes 3 and up plus 0x40).
4 | Field | Field to use, either 1 or 2 (note that, strictly speaking, "Line 10 Field 2" is actually Line 273) (add 0x20 to byte from field 3 if `2`).
5 | Checksum | Checksum, in hexidecimal (last two bytes are 0x8f and checksum byte).
N | Class Continue | Class of `M`iscellaneous `c`ontinue (byte N = 0x08).
N+1 | Type Continue | Same value as Type (field 2). This is followed by the rest of the interrupted packet (with Checksum same as if there had been no interruption).
Local Time Zone
Example CCD:
    00:04:04:00	{XDS Ms TZ -08S \Cd6}
               	      |  |   ||   |
               	      1  2   34   5
SCC:
    00:04:04:00	0704 d040 8fd6
Field | Name | Explanation
1 | Class | Class of `M`iscellaneous `s`tart (byte 1 = 0x07).
2 | Type | The Local Time Zone Type (byte 2 = 0x04).
3 | TZ | Hours to add to UTC (London's Time Zone) to get local time: -4 for Eastern Time, -8 for Pacific Time (24 minus byte 3 plus 0x40).
4 | DST | Either `D` if Daylight Savings Time is currently being observed in this time zone, or `S` if Standard Time is currently being observed (add 0x20 to byte 3 if `D`).
5 | Checksum | Checksum, in hexidecimal (bytes 5 and 6 are 0x8f and checksum byte).
N | Class Continue | Class of `M`iscellaneous `c`ontinue (byte N = 0x08).
N+1 | Type Continue | Same value as Type (field 2). This is followed by the rest of the interrupted packet (with Checksum same as if there had been no interruption).
Out of Band Channel
Example CCD:
    00:04:05:00	{XDS Ms OB 0172 \C7c}
               	      |  |   |    |
               	      1  2   3    4
SCC:
    00:04:05:00	0740 ecc2 8f7c
Field | Name | Explanation
1 | Class | Class of `M`iscellaneous `s`tart (byte 1 = 0x07).
2 | Type | The Out of Band Channel Type (byte 2 = 0x40).
3 | Channel | Channel on which to find out-of-band data, from 1 to 4096 (practically limited to range of 2 to 300 or so); "out-of-band" means there is a second channel associated with this one that carries data on all of its scanlines instead of video and VBI (divide by 64: store result plus 0x40 in byte 4 and remainder plus 0x40 in byte 3).
4 | Checksum | Checksum, in hexidecimal (bytes 5 and 6 are 0x8f and checksum byte).
N | Class Continue | Class of `M`iscellaneous `c`ontinue (byte N = 0x08).
N+1 | Type Continue | Same value as Type (field 2). This is followed by the rest of the interrupted packet (with Checksum same as if there had been no interruption).
Channel Map Pointer
Example CCD:
    00:04:06:00	{XDS Ms CP 0099 \C85}
               	      |  |   |    |
               	      1  2   3    4
SCC:
    00:04:06:00	07c1 e3c1 8f85
Field | Name | Explanation
1 | Class | Class of `M`iscellaneous `s`tart (byte 1 = 0x07).
2 | Type | The Channel Map Pointer Type (byte 2 = 0xc1).
3 | Map Channel | Channel where the channel map is being broadcasted (divide by 64: store result plus 0x40 in byte 4 and remainder plus 0x40 in byte 3).
4 | Checksum | Checksum, in hexidecimal (bytes 5 and 6 are 0x8f and checksum byte).
N | Class Continue | Class of `M`iscellaneous `c`ontinue (byte N = 0x08).
N+1 | Type Continue | Same value as Type (field 2). This is followed by the rest of the interrupted packet (with Checksum same as if there had been no interruption).
Channel Map Header
Example CCD:
    00:04:07:00	{XDS Ms CH 0312 v17 \C5b}
               	      |  |   |   |    |
               	      1  2   3   4    5
SCC:
    00:04:07:00	07c2 f8c4 5140 8f5b
Field | Name | Explanation
1 | Class | Class of `M`iscellaneous `s`tart (byte 1 = 0x07).
2 | Type | The Channel Map Header Type (byte 2 = 0xc1).
3 | Channels | Number of channels that will be mapped in the following Channel Map packets (divide by 64: store result plus 0x40 in byte 4 and remainder plus 0x40 in byte 3).
4 | Version | Running count of how many times this table has been revised (add 0x40 and store in byte 5; byte 6 is filler of 0x40).
5 | Checksum | Checksum, in hexidecimal (bytes 7 and 8 are 0x8f and checksum byte).
N | Class Continue | Class of `M`iscellaneous `c`ontinue (byte N = 0x08).
N+1 | Type Continue | Same value as Type (field 2). This is followed by the rest of the interrupted packet (with Checksum same as if there had been no interruption).
Channel Map
Example CCD:
    00:04:08:00	{XDS Ms CM 46=173}
               	      |  | | | |
               	      1  2 3 4 5
    00:04:08:03	{EDM}{EDM}
    00:04:08:05	{XDS Mc CM KXRT \C61}
               	      |  |   |    |
               	      N N+1  6    7
SCC:
    00:04:08:00	0743 6ee0 6dc2

    00:04:08:03	152c 152c

    00:04:08:05	0843 cb58 5254 8f61
Field | Name | Explanation
1 | Class | Class of `M`iscellaneous `s`tart (byte 1 = 0x07).
2 | Type | The Channel Map Type (byte 2 = 0x43).
3 | User Channel | Public number of the channel (divide by 64: store result plus 0x40 in byte 4 and remainder plus 0x40 in byte 3).
4 | Remapped? | (Optional) Is User Channel remapped to a Tune Channel? (add 0x20 to byte 4 if there's an equals sign here).
5 | Tune Channel | (Optional unless Remapped is set) Number of the channel on the cable system used to tune to the User Channel (divide by 64: store result plus 0x40 in byte 6 and remainder plus 0x40 in byte 5).
6 | Channel ID | (Optional, up to 6 characters) Public name of channel (bytes 5 [if no Tune Channel] or 7 and up, using closed caption character set).
7 | Checksum | Checksum, in hexidecimal (last two bytes are 0x8f and checksum byte).
N | Class Continue | Class of `M`iscellaneous `c`ontinue (byte N = 0x08).
N+1 | Type Continue | Same value as Type (field 2). This is followed by the rest of the interrupted packet (with Checksum same as if there had been no interruption).

PUBLIC SERVICE CLASS
Start code for Public Service class is 0x89. Continue code is 0x8a.

National Weather Service Bulletin
Example CCD:
    00:05:01:00	{XDS Ps WB FFW 006 037 02:30 \Cb3}
               	      |  |  |   |   |    |     |
               	      1  2  3   4   5    6     7
SCC:
    00:05:01:00	8901 4646 57b0 b0b6 b0b3 3731 b040 8fb3
Field | Name | Explanation
--- | --- | ---
1 | Class | Class of `P`ublic Service `s`tart (byte 1 = 0x89).
2 | Type | The National Weather Service Bulletin Type (byte 2 = 0x01).
3 | Event Category | 3-character code for the weather event (bytes 3 - 5, using closed caption character set). Here's what they mean (note that a Warning is more severe than an Advisory):
Code | Category
--- | ---
ADR | Administrative Message
BRT | Composite Broadcast Statement
BZW | Blizzard Warning
CEM | Civil Emergency Message
DMO | Practice/Demonstration Warning
FFA | Flash Flood Advisory
FFS | Flash Flood Statement
FFW | Flash Flood Warning
FLA | Flood Advisory
FLS | Flood Statement
FLW | Flood Warning
HLS | Hurricane Statement
HUA | Hurricane Advisory
Code | Category
--- | ---
HUW | Hurricane Warning
HWA | High Wind Advisory
HWW | High Wind Warning
LFP | Service Area Forecast
SPS | Special Weather Statement
SVA | Severe Thunderstorm Advisory
SVR | Severe Thunderstorm Warning
SVS | Severe Thunderstorm Statement
TOA | Tornado Advisory
TOR | Tornado Warning
WSA | Winter Storm Advisory
WSW | Winter Storm Warning
XXX | Unknown
4 | State FIPS | 3-digit code (taken from Federal Information and Processing Standard 6-4) for the state or territory the bulletin applies to (bytes 6 - 8, converting each digit using closed caption character set). Here's a list:
FIPS | State/Territory
--- | ---
001 | Alabama
002 | Alaska
004 | Arizona
005 | Arkansas
006 | California
008 | Colorado
009 | Connecticut
010 | Delaware
011 | District of Columbia
012 | Florida
013 | Georgia
015 | Hawaii
016 | Idaho
017 | Illinois
018 | Indiana
019 | Iowa
020 | Kansas
021 | Kentucky
022 | Louisiana
023 | Maine
024 | Maryland
025 | Massachusetts
026 | Michigan
027 | Minnesota
028 | Mississippi
029 | Missouri
030 | Montana
031 | Nebraska
FIPS | State/Territory
--- | ---
032 | Nevada
033 | New Hampshire
034 | New Jersey
035 | New Mexico
036 | New York
037 | North Carolina
038 | North Dakota
039 | Ohio
040 | Oklahoma
041 | Oregon
042 | Pennsylvania
044 | Rhode Island
045 | South Carolina
046 | South Dakota
047 | Tennessee
048 | Texas
049 | Utah
050 | Vermont
051 | Virginia
053 | Washington
054 | West Virginia
055 | Wisconsin
056 | Wyoming
060 | American Samoa
066 | Guam
069 | Northern Mariana Islands
072 | Puerto Rico
5 | County FIPS | 3-digit FIPS code for county the bulletin applies to (bytes 9 - 11, converting each digit using closed caption character set). The list is obviously too long to include here, but it can be found on the Internet by typing "FIPS counties list" and the state name into a search engine (in the example above, county FIPS 037 in state FIPS 006 (CA) is Los Angeles County).
6 | Duration | How long this bulletin applies, in hours and minutes (translate into a two-digit number of quarter-hours, then covert each digit using closed caption character set to get bytes 12 and 13; byte 14 is the the filler value 0x40).
8 | Checksum | Checksum, in hexidecimal (bytes 15 and 16 are 0x8f and checksum byte).
N | Class Continue | Class of `P`ublic Service `c`ontinue (byte N = 0x8a).
N+1 | Type Continue | Same value as Type (field 2). This is followed by the rest of the interrupted packet (with Checksum same as if there had been no interruption).
National Weather Service Message
Example CCD:
    00:05:02:00	{XDS Ps WM I-5 N }
               	      |  |    |
               	      1  2    3
    00:05:02:04	{EDM}{EDM}
    00:05:02:06	{XDS Pc WM closed at I-110. \C68}
               	      |  |         |          |
               	      N N+1        3          4
SCC:
    00:05:02:00	8902 49ad b520 ce20

    00:05:02:04	152c 152c

    00:05:02:06	8a02 e3ec ef73 e564 2061 f420 49ad 3131 b0ae 8f68
Field | Name | Explanation
1 | Class | Class of `P`ublic Service `s`tart (byte 1 = 0x89).
2 | Type | The National Weather Service Message Type (byte 2 = 0x02).
3 | Program Name | The text of the message (bytes 3 and up, up to 32 characters, using closed caption character set).
4 | Checksum | Checksum, in hexidecimal (last two bytes are 0x8f and checksum byte).
N | Class Continue | Class of `P`ublic Service `c`ontinue (byte N = 0x8a).
N+1 | Type Continue | Same value as Type (field 2). This is followed by the rest of the interrupted packet (with Checksum same as if there had been no interruption).

RESERVED CLASS
Start code for Reserved class is 0x0b. Continue code is 0x8c.

UNDEFINED CLASS
Start code for Undefined class is 0x0d. Continue code is 0x0e.

ALL CLASSES
The following definition is to cover all data not defined above.

Undocumented Type
Example CCD:
    00:07:01:00	{XDS Us 01 c8 c2 4f 20 \Cea}
               	      |  |      |        |
               	      1  2      3        4
SCC:
    00:07:01:00	0d01 c8c2 4f20 8fea
Field | Name | Explanation
--- | --- | ---
1 | Class | Class of `C`urrent, `F`uture, C`H`annel, `M`iscellaneous, `P`ublic Service, `R`eserved or `U`ndefined, `s`tart (byte 1 = 0x01, 0x83, 0x85, 0x07, 0x89, 0x0b or 0x0d for Current start, Future start, Channel start, Miscellaneous start, Public Service start, Reserved start, or Undefined start).
2 | Type | Undocumented type code (byte 2 = value).
3 | Data | Hexidecimal dump of data in packet (bytes 3 and up; it may be useful to compare the bytes against the closed caption character set).
4 | Checksum | Checksum, in hexidecimal (last two bytes are 0x8f and checksum byte).
N | Class Continue | Continuation of start class, applied any time packet has to be continued after an interruption (byte N = 0x02 for `C`urrent `c`ontinue, 0x04 for `F`uture `c`ontinue, 0x86 for C`H`annel `c`ontinue, 0x08 for `M`iscellaneous `c`ontinue, 0x8a for `P`ublic Service `c`ontinue, 0x8c for `R`eserved `c`ontinue, or 0x0e for `U`ndefined `c`ontinue)
N+1 | Type Continue | Same value as Type (field 2). This is followed by the rest of the interrupted packet (with Checksum same as if there had been no interruption).

Return to SCC Tools Documentation.