The standard Propeller composite video output circuit consists of 3 resistors of 270, 560, and 1000 Ohms. When connected to 3 output pins this circuit is able to produce 8 distinct output voltages. This is what we expect because 2^3 = 8.
The good: If we add high impedance to the output high and output low states used previously we have 27 unique output states. ( 3^3 = 27 ) There are 8 states that result in 0 volts at the output. In total, we have 20 unique output voltages possible from the circuit.
The bad: The linearity is not so good. It's not obvious how to generate the output state for a given voltage. The easiest way is to compute all 27 states and sort by voltage. A look-up table can solve both of these at the same time. :cool:
The ugly: The video generator doesn't drive DIRA. We would have a bit-banged video driver. It would be best to update DIRA and OUTA simultaneously. One way to do this would be to use one cog for the output high and another for the output low. That way they can have OUTA constant and just update DIRA. They could read the same data and just use a different look-up table. We would have to generate the chroma subcarrier in software. On the bright side, the 80MHz system clock would give more phase resolution than the 16x clock used by the video generator.
Implementing this in the P1v would solve most of the uglies. We could just modify the video generator to let it drive DIRA as well as OUTA. But, without a proper PLL the P1v likely doesn't produce such good quality video.
If I missed a previous discussion about this, please let us know.