It has long been known that commodity PC graphics cards can, with a custom modeline, generate an “almost” PAL video signal. You only need to use a simple sync converter to get a picture on most TV sets. This allows you to skip the TV out filter (if you even have one) and control the signal more or less however you want. I wondered if this would be good enough to feed a teletext signal into the TV set, and it turns out that it is.
I have implemented the teletext specification in python code, and generate the encoded video lines as a bitmap. This then has to be “tuned” to the TV set/video card combination by scaling it horizontally to get the correct timing. Then I display the result at the top of the picture using a modeline with lots of overscanning. The result looks a bit like this:
I use the VGA2SCART converter described at http://www.nexusuk.org/projects/vga2scart/ with one modification: a 100 ohm resistor between the red and composite pins. This is needed as the teletext decoder works from the composite video signal. The 100 ohm resistor puts some of the red signal onto the composite without affecting the picture too much. A better design could generate a real composite signal from the RGB without much difficulty. eg this one: http://www.nexusuk.org/projects/rgb2svid/circuit
I use a modeline which gives 609 lines on the output. This gives 5 usable lines of teletext with my TV. Again, this probably needs to be tuned for each set/video card to get a usable picture.
This is the modeline I use, with an nvidia MX4000:
ModeLine "768x609pali" 14.750 768 789 858 944 609 614 619 625 -hsync -vsync interlace # Analogue w/ extra lines
I have a modified version of alevt which can dump a whole channel’s worth of magazine pages, and I can then feed those back into the TV. Since this is a software solution there is no limit on the amount of pages except how long you are willing to wait for the carousel to repeat. With 5 lines it is about as fast as the real thing. I even replicated the clock lines.
Teletext spec is available here.