rendered paste bodyN@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.
################################
# 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;
# Third stage.
~Clock & Mode == 3 -> X3 = X;
~Clock & Mode == 3 -> Y3 = Y;
~Clock & Mode == 3 -> P3 = Pixel;
# Second stage.
~Clock & Mode == 2 -> X2 = X;
~Clock & Mode == 2 -> Y2 = Y;
~Clock & Mode == 2 -> P2 = Pixel;
# First stage.
~Clock & Mode == 1 -> X1 = X;
~Clock & Mode == 1 -> Y1 = Y;
~Clock & Mode == 1 -> P1 = Pixel;
#Clocklet!
~Clock -> Clock += 1;