N@TV Packet Encoder v2.0 I@Clock X Y Pixel O@TVPacket # TV Packet Encoder # Encodes packets for the TV. # Based on TV Packet Encoder v1.0 NOT v1.1. # INPUTS: # Clock: The clock pulse. This must ONLY change every 20 or 25ms (clock). # X: The X value for the screen. # Y: The Y value for the screen. # Pixel: The Pixel value for the screen. # OUTPUTS: # TVPacket: Packets outbound to the satellite relay. # MODUS OPERANDI: # On every clock ( # On every fourth clock change, it gets X, Y, Pixel AND the previous three frames (from 9 # variables) and puts them into a packet. # How do I do this? If blocks! # PACKET FORMAT: # Packets contain four pixels/frames worth of data in the following format: # X1, Y1, P1, X2, Y2, P2, X3, Y3, P3, X, Y, Pixel # END OF USER SERVICEABLE PARTS. ################################ # Do not change if the following values change. ~X -> end; ~Y -> end; ~Pixel -> end; # Otherwise...continue! # 0th stage. Mode == 0 -> Mode = 1; # Final stage! ~Clock & Mode == 6 -> TVPacket = send(X1, Y1, P1, X2, Y2, P2, X3, Y3, P3, X4, Y4, P4, X5, Y5, P5, X, Y, Pixel); ~Clock & Mode == 6 -> Mode = 0; # Fifth stage. ~Clock & Mode == 5 -> X5 = X; ~Clock & Mode == 5 -> Y5 = Y; ~Clock & Mode == 5 -> P5 = Pixel; ~Clock & Mode == 5 -> Mode = 6; # Fourth stage. ~Clock & Mode == 4 -> X4 = X; ~Clock & Mode == 4 -> Y4 = Y; ~Clock & Mode == 4 -> P4 = Pixel; ~Clock & Mode == 4 -> Mode = 5; # Third stage. ~Clock & Mode == 3 -> X3 = X; ~Clock & Mode == 3 -> Y3 = Y; ~Clock & Mode == 3 -> P3 = Pixel; ~Clock & Mode == 3 -> Mode = 4; # Second stage. ~Clock & Mode == 2 -> X2 = X; ~Clock & Mode == 2 -> Y2 = Y; ~Clock & Mode == 2 -> P2 = Pixel; ~Clock & Mode == 2 -> Mode = 3; # First stage. ~Clock & Mode == 1 -> X1 = X; ~Clock & Mode == 1 -> Y1 = Y; ~Clock & Mode == 1 -> P1 = Pixel; ~Clock & Mode == 1 -> Mode = 2;