Difference between revisions of "UVSG Satellite Data"

From Prevue Guide Wiki
Jump to navigation Jump to search
Line 27: Line 27:
 
!scope="col"| Description
 
!scope="col"| Description
 
!scope="col"| Notes
 
!scope="col"| Notes
 +
!scope="col"| Atari
 +
!scope="col"| Amiga
 
|-
 
|-
 
!scope="row"| A
 
!scope="row"| A
Line 33: Line 35:
 
| Addresses the machines by select code, informing them to listen for commands
 
| Addresses the machines by select code, informing them to listen for commands
 
|  
 
|  
 +
| Yes
 +
| Yes
 
|-
 
|-
 
!scope="row"| C
 
!scope="row"| C
Line 39: Line 43:
 
| Contains the channel lineup
 
| Contains the channel lineup
 
| Divided by the receiving machine into a list of channel numbers, call letters, and sources.
 
| Divided by the receiving machine into a list of channel numbers, call letters, and sources.
 +
| Yes
 +
| Yes
 +
|-
 +
!scope="row"| D
 +
| ?
 +
| $BB
 +
| ?
 +
| ?
 +
| No
 +
| Yes
 
|-
 
|-
 
!scope="row"| E
 
!scope="row"| E
Line 45: Line 59:
 
| ?
 
| ?
 
| Atari L9118 (3 bytes - some kind of configuration bytes relating to CURDAY and NXTDAY?)
 
| Atari L9118 (3 bytes - some kind of configuration bytes relating to CURDAY and NXTDAY?)
 +
| Yes
 +
| Yes
 
|-
 
|-
 
!scope="row"| F
 
!scope="row"| F
Line 51: Line 67:
 
| Gives the receiving machine information about its location, local time, settings, ads, and more.
 
| Gives the receiving machine information about its location, local time, settings, ads, and more.
 
| Same syntax on both Atari and Amiga, just a lot of unused values on Atari.
 
| Same syntax on both Atari and Amiga, just a lot of unused values on Atari.
 +
| Yes
 +
| Yes
 
|-
 
|-
 
!scope="row"| f
 
!scope="row"| f
Line 56: Line 74:
 
| ??
 
| ??
 
| Provides some settings, like GridMR, Sport, SBS, ClockCmd, and more that are written to config.dat.
 
| Provides some settings, like GridMR, Sport, SBS, ClockCmd, and more that are written to config.dat.
| Only works on Amiga
+
|  
 +
| No
 +
| Yes
 
|-
 
|-
 
!scope="row"| g
 
!scope="row"| g
Line 62: Line 82:
 
| $98
 
| $98
 
| Defines future DST information
 
| Defines future DST information
| May offer some clues as to the Amiga format of the K command?
+
|  
 +
| No
 +
| Yes
 
|-
 
|-
 
!scope="row"| H
 
!scope="row"| H
Line 68: Line 90:
 
| $B7
 
| $B7
 
| Can be used to write a file to disk, likely other Amiga maintenance tasks as well
 
| Can be used to write a file to disk, likely other Amiga maintenance tasks as well
| Works only on Amiga platforms
+
| Exact same command is also available under 'h' and '='
 +
| No
 +
| Yes
 
|-
 
|-
 
!scope="row"| J
 
!scope="row"| J
Line 75: Line 99:
 
| For pay-per-view channels
 
| For pay-per-view channels
 
|  
 
|  
 +
| No
 +
| Yes
 
|-
 
|-
 
!scope="row"| j
 
!scope="row"| j
Line 81: Line 107:
 
| For pay-per-view channels
 
| For pay-per-view channels
 
| (likely newer format)
 
| (likely newer format)
 +
| No
 +
| Yes
 
|-
 
|-
 
!scope="row"| K
 
!scope="row"| K
Line 86: Line 114:
 
| $AB
 
| $AB
 
| Sets the time centrally
 
| Sets the time centrally
| The known syntax of this command does not work on post-1997 Prevue Grid software
+
| Requires ClockCmd to be 2 on Amiga
 +
| Yes
 +
| Yes
 
|-
 
|-
 
!scope="row"| L
 
!scope="row"| L
Line 93: Line 123:
 
| Centrally provides an ad or message
 
| Centrally provides an ad or message
 
| Seems to crash Prevue Grid if there is already ad in a slot, maybe bad syntax
 
| Seems to crash Prevue Grid if there is already ad in a slot, maybe bad syntax
 +
| Yes
 +
| Yes
 
|-
 
|-
 
!scope="row"| M
 
!scope="row"| M
Line 99: Line 131:
 
| ?
 
| ?
 
| Atari L9152 (reads 2 bytes)
 
| Atari L9152 (reads 2 bytes)
 +
| Yes
 +
| Yes
 
|-
 
|-
 
!scope="row"| N
 
!scope="row"| N
Line 105: Line 139:
 
| ?
 
| ?
 
| Atari L92A4
 
| Atari L92A4
 +
| Yes
 +
| No
 
|-
 
|-
 
!scope="row"| O
 
!scope="row"| O
Line 111: Line 147:
 
| ?
 
| ?
 
| No checksum - send $00 $B0 immediately after - Atari L91BA (Amiga accepts as valid)
 
| No checksum - send $00 $B0 immediately after - Atari L91BA (Amiga accepts as valid)
 +
| Yes
 +
| Yes
 
|-
 
|-
 
!scope="row"| P
 
!scope="row"| P
Line 117: Line 155:
 
| Program information
 
| Program information
 
|  
 
|  
 +
| Yes
 +
| Yes
 
|-
 
|-
 
!scope="row"| p
 
!scope="row"| p
Line 123: Line 163:
 
| Program information
 
| Program information
 
| Possibly newer format, example in NEWP test file
 
| Possibly newer format, example in NEWP test file
 +
| No
 +
| Yes
 
|-
 
|-
 
!scope="row"| Q
 
!scope="row"| Q
Line 129: Line 171:
 
| Not sure, probably has something to do with PPV channels
 
| Not sure, probably has something to do with PPV channels
 
|  
 
|  
 +
| No
 +
| Yes
 
|-
 
|-
 
!scope="row"| R
 
!scope="row"| R
Line 134: Line 178:
 
| $AD
 
| $AD
 
| Reset computer
 
| Reset computer
| No checksum - send $00 $AD immediately after. Works on both Atari and Amiga.
+
| No checksum - send $00 $AD immediately after.
 +
| Yes
 +
| Yes
 
|-
 
|-
 
!scope="row"| T
 
!scope="row"| T
Line 141: Line 187:
 
| Sets the guide title
 
| Sets the guide title
 
| Only applicable to EPG, but recognized by Prevue Grid as a valid command
 
| Only applicable to EPG, but recognized by Prevue Grid as a valid command
 +
| Yes
 +
| Yes
 
|-
 
|-
 
!scope="row"| Z
 
!scope="row"| Z
Line 147: Line 195:
 
| ?
 
| ?
 
| Atari L9206 (12 configuration bytes read into 04E7 onwards)
 
| Atari L9206 (12 configuration bytes read into 04E7 onwards)
 +
| Yes
 +
| No
 
|-
 
|-
 
!scope="row"| $03
 
!scope="row"| $03
Line 153: Line 203:
 
| ?
 
| ?
 
| Atari L949F (hexadecimal 03)
 
| Atari L949F (hexadecimal 03)
 +
| Yes
 +
| No
 
|-
 
|-
 
!scope="row"| $BB
 
!scope="row"| $BB
Line 159: Line 211:
 
| Tells all listening boxes to stop listening
 
| Tells all listening boxes to stop listening
 
| No checksum - send $BB $00 $FF immediately after
 
| No checksum - send $BB $00 $FF immediately after
 +
| Yes
 +
| Yes
 
|-
 
|-
 
|}
 
|}

Revision as of 17:18, 17 June 2011

This was the format used by United Video Satellite Group to send data out at 2400 baud over a satellite feed. Many different types of information were sent out through this feed, including time/date information, system settings, channel listings, and system updates.

Tin has successfully reverse engineered parts of this format, and it is now possible to send our own messages to emulated or real EPG/Prevue machines over serial. Additionally, some test files received from an ex-UV employee have helped to further the reverse engineering effort.

Overview

Every box on message always starts with the header "55 AA", followed by a select code, a 00, and a checksum. A command is started with a "55 AA", then a byte indicating which mode of command is being sent out, then the data of the command, which is usually followed by checksum.

For example, here are two commands that will tell an EPG machine to listen, then change its title to "PREVUE GUIDE":

55 AA 41 2A 00 94 55 AA 54 50 52 45 56 55 45 20 47 55 49 44 45 00 D0

In this example, the select code being addressed is 2A, or the ASCII code for an asterisk (*). This means every machine that is connected to the satellite feed will act on this command. Then, a 00 to terminate the string, and a checksum (94). After the 55 AA, you see the mode byte (54, or T for Title), and then an ASCII string (PREVUE GUIDE). Lastly, there is another 00 to terminate the string, and D0, the checksum for the entire string.

Initial Checksum

Most commands have a checksum that is calculated on all the bytes of the data part of the command. This is sent over the serial port and compared to the correct value by the receiving machine. If the checksum does not match, the computer discards the whole command. The checksum is calculated by bitwise XOR of each byte of data within the command excluding the command letter itself. Each command has its own hardcoded seed checksum which is loaded as the initial value of the checksum as soon as the initial command letter is recieved.

Command Modes

Some of this is conjecture and named according to clues found in the reverse-engineered code - it's subject to change and mistakes! Some of the checksums were found from an Atari disassembly, and a few were found by running UVSG sample messages through UVSGXOR.

Command Name Initial Checksum Description Notes Atari Amiga
A Box On $BE Addresses the machines by select code, informing them to listen for commands Yes Yes
C Channel $BC Contains the channel lineup Divided by the receiving machine into a list of channel numbers, call letters, and sources. Yes Yes
D ? $BB ? ? No Yes
E ? $BA ? Atari L9118 (3 bytes - some kind of configuration bytes relating to CURDAY and NXTDAY?) Yes Yes
F Configuration $B9 Gives the receiving machine information about its location, local time, settings, ads, and more. Same syntax on both Atari and Amiga, just a lot of unused values on Atari. Yes Yes
f Config.dat ?? Provides some settings, like GridMR, Sport, SBS, ClockCmd, and more that are written to config.dat. No Yes
g ? $98 Defines future DST information No Yes
H Download $B7 Can be used to write a file to disk, likely other Amiga maintenance tasks as well Exact same command is also available under 'h' and '=' No Yes
J Order Information $B5 For pay-per-view channels No Yes
j Order Information $95 For pay-per-view channels (likely newer format) No Yes
K Clock $AB Sets the time centrally Requires ClockCmd to be 2 on Amiga Yes Yes
L Ad $B3 Centrally provides an ad or message Seems to crash Prevue Grid if there is already ad in a slot, maybe bad syntax Yes Yes
M ? $B2 ? Atari L9152 (reads 2 bytes) Yes Yes
N ? $B1 ? Atari L92A4 Yes No
O ? $B0 ? No checksum - send $00 $B0 immediately after - Atari L91BA (Amiga accepts as valid) Yes Yes
P Program $AF Program information Yes Yes
p Program $8F Program information Possibly newer format, example in NEWP test file No Yes
Q ? $AE Not sure, probably has something to do with PPV channels No Yes
R Reset $AD Reset computer No checksum - send $00 $AD immediately after. Yes Yes
T Title $AB Sets the guide title Only applicable to EPG, but recognized by Prevue Grid as a valid command Yes Yes
Z ? $A5 ? Atari L9206 (12 configuration bytes read into 04E7 onwards) Yes No
$03 ? ? ? Atari L949F (hexadecimal 03) Yes No
$BB Box Off $44 Tells all listening boxes to stop listening No checksum - send $BB $00 $FF immediately after Yes Yes

Known Command Syntax

C Command Syntax

0x43 [Julian day, byte]
0x12 [flags, byte] [6-character source, string]
0x11 [Channel #, string]
0x01 [5- to 6-character channel name, string]
0x00 [checksum, byte]

NOTE: On EPG Jr. the channel name has a limit of 5 characters

C Commmand Flags

Flag name Hex value
None 0x01
HILITESRC 0x02
SUMBYSRC 0x04
VIDEO_TAG_DISABLE 0x08
CAF_PPVSRC 0x10
DITTO 0x20
ALTHILITESRC 0x40
STEREO 0x80

P Command Syntax

0x50 [Timeslot 1-48, hex] [Julian day, hex] [6-character source, string]
0x12 [flags, byte] [Program name, string]
0x00 [checksum, byte]

P Commmand Flags

Flag name Hex value
None 0x01
Movie 0x02
ALTHILITEPROG 0x04
TAGPROG 0x08
SPORTSPROG 0x10
DVIEW_USED 0x20
REPEATPROG 0x40
PREVDAYSDATA 0x80