Ground Control / Octopus receiver
How it works



The teletext receivers made by Ground Control were solid metal boxes. Early versions had an attached mains lead that somehow was always an 'inch too short'. Later versions had an IEC socket for the "kettle lead" style used on practically all computer equipment.

The original boxes were supplied with a choice of printer lead, where some clever software 'faked' the IIC protocol down a special printer lead, or a podule socket in which the RISC OS IIC was used.
It is believed that the printer port system only works with the 'discrete' printer ports as supplied on the A3xx, A4x0, and the A3000.

The Ground Control teletext receiver is assumed to have come in three variants. This assumption is based upon my having two. A dead model UTA-1 and a working model UTA-3.
It is not known what sort of units were being sold by Octopus Systems. As he (Paul Skirrow) bought the remaining Ground Control stock, I think it is safe to assume the UTA-3 or something close.

The earliest, the UTA-1, is based around the Philips Euro CCT design, featuring the SAA 5240 Euro CCT, the SAA 5231 VIP, the SAB 3035 CITAC, and a selection of other chips for television picture extraction.

The later, the UTA-3, contains the slightly later SAA 5243 Euro CCT. Additionally, the CITAC is missing. The UHF tuner is different, this one accepting IIC signals itself, so we might assume the CITAC (or a compatible clone) is built into the tuner itself.

The memory capability of the unit appears to be 2Kb. This is wired as A0-A9 for 1Kb addressing, and A12 for bank selecting. This allows the Euro TTX to operate in "ghost row" mode. Ironically, it appears that the Euro TTX might not be operating in full "ghost row" mode, so it'd only fetch the TSDP and the linked pages information (rows 30 and 27). I plan to look into making more use of "ghost row" for rudimentary Level 2 support.

The incoming UHF signal is tuned by the CITAC (or whatever does the same job inside the later tuner). This demodulated signal is then processed minimally to split off the video and the audio. These signals are provided for you at the AUX socket. Possibly useful if you have a digitiser. A gimmick for a website could be "pick a channel and see what's on". From here, the video is presented to the VIP - the Video Input Processor. This detects if the signal is 'worthy', and if it is, it pulls out the teletext data-stream and feeds it to the Euro CCT. The Euro CCT examines the data-stream for our desired page, and when it finds it, it is copied to memory. From here, we can retrieve the information from memory via the IIC bus.

If you are interesting in the timings of the device: the VIP data extraction (and the teletext bit rate) is 6.9375MHz. The VIP also provides timing for the rest of the receiver systems, which operate at 6MHz (teletext frame generation) or 1MHz (most stuff).
This is dealt with in more detail in the description of the older Acorn receiver.

It is perhaps particularly ironic that the Euro CCT has a number of additional features that could have been provided for us. The first of these is that the Euro CCT includes a full character set generator and masking options. These might have been used to 'overlay' teletext frames on the output video signal, much as the same is possible with any TV set. The Euro CCT takes care of the re-sychronisation for us. We simply need to convert RGB into composite video, and merge it as directed by the Euro CCT. It would support "newsflash", subtitles, etc. It is theoretically possible to build a 'cheap' plug-in keypad that generates the necessary IIC commands to control the text output in this way. Maybe originally using a 6502 or a Z80, or these days one of the PIC devices... you would then have a simple yet effective way to add teletext to any device that can accept a composite video input (even if the device has no tuner of it's own, you can turn it into a teletext TV!) and be able to control it via a plug-in keypad that could be powered from the receiver, and operate without any computer attached and simply swap leads and it will function - as it does now - as a data acquisition device for a computer.
Perhaps of much greater use to the everyday user would have been the inclusion of 8Kb of memory. The Euro CCT can actually search for FOUR pages, completely independently of each other. In other words, each time the magazine wraps around, it could fetch four pages, in any order. These would take 1Kb per page, plus an additional 1Kb for the "ghost row" data.


Price guide

The prices for the various components, now, are taken from the Maplin Electronics CD-ROM, Sept 98 to Feb 99. Sorry, I do not have a newer version, so take these only as a rough guide - assuming you can still source these parts...
Prices are per unit.

     SAA5243P/R       £33.97   (AUV06)
     SAA5231/V7       £ 4.59   (AUV02)
     SAB3036/C1       £13.71   (AUW02)
     TBA120U/V5       £ 1.43   (AUX19)
     TDA8341/N6       £ 3.18   (AUZ18)


Front Panel Connections

There are three sockets on the front of the Ground Control receiver, as follows:
Front connections; GIF, 5K
This is as seen looking at the front of the receiver.


The SAA 524x Euro CCT

It is known that two versions of the Euro CCT were incorporated into the Ground Control teletext receivers. The early version used the original Euro CCT - the SAA5240P/A, while the later version used the SAA5243P/E. I do not know exactly what the differences are, between these devices.

The SAA 5240 is a second-generation LSI teletext decoder. It takes over several of the functions provided by individual integrated circuits in the first-generation decoders, namely the SAA5040 TAC (this retrieves the teletext data from the video data-stream) and the SAA5050 TROM character generator that everybody who's ever used a BBC micro will be familiar with.
All of these functions are provided by the SAA 5240 Euro CCT, which greatly reduces the component count and makes for more reliable and compact hardware. In addition, the dot-mapping for the generated characters is on a 12x10 matrix instead of the original 5x9. However as the Ground Control receiver does not make any use of this facility, we won't discuss it further.

The video data-stream is split (by the VIP2) into data and clock, which is input into the Euro CCT. The data acquisition function searches for the requested page using an extremely flexible system (you can tell it to look for... from ANY page, to any page in a given magazine such as p1xx, right down to a specific sub-frame only, like p110.7).
The Euro CCT provides four parallel systems to search for pages, but this is not utilised by the Ground Control hardware - though provision has been made for it as a modification.
Once the page has been fetched, it is stored in memory. This facility is provided either for display by the Euro CCT itself, or for later transmission to a controlling computer via the IIC bus.

The Euro CCT responds as IIC device 17 (or #34 to write and #35 to read).


The SAA 5231 VIP2

The VIP2 (Video Input Processor) is responsible for assessing the 'quality' of the input video signal, and (if the signal is good) for extracting the teletext data-stream and clocking, which is then presented to the Euro CCT.
A possible 'notable' function of the VIP2 which is not implemented in the Ground Control receiver is the 'VCR' input. This modifies the VIP2's internals slightly to allow better data extraction from a source which may contain jitter, such as a video recorder. With this, and suitable software, it is theoretically possible to extract "Closed Captioned" data from appropriately captioned videos.
The VIP2 does not connect to the IIC bus.


The TDA 8341

This is a Television IF amplifier and demodulator, the TDA 8341 version being for 'P-N-P' style tuners. Below is a pinning chart for your information.
TDA 8341 pinning; GIF, 11K


The TBA 120U

At this time, I have no information on the function of this device. As it appears to be connected directly to the audio connection of the AUX socket, I would guess that it has something to do with splitting off the sound from the received signal. While this has no possible use for teletext, it and the associated circuitry probably cost less than £2, and providing an audio/video connection on the front is a good selling 'feature'.


The SAB 3036 (early model)

This is the "CITAC" (Computer Assisted Tuning And Control). Its function is to generate the tuning voltages for the tuner module.
I have no further information on this device at this time.
Later versions of the teletext receiver do not have a CITAC on-board. Instead, the IIC goes directly into the tuner module, so we can assume that some form of CITAC is present within the tuner module itself.


The tuner (later model)

There is no SAB 3036 "CITAC" in the later model; the IIC goes directly into the tuner module.

The first step is to convert your UHF channel (21-69) to a frequency. We know that channel UHF21 is 471.250MHz, and that the channels are 8MHz apart, so we can use the formula:

( ( ( UHF_channel - 21 ) * 8000 ) + 471250 )
The answer is the frequency in kilohertz.

Note that channel tunings are calculated in kilohertz.

To convert this into something we can send to the tuner...

( ( ( kHz_value + 38900 ) * 16 ) / 1000 )
The answer is a 16 bit value that is sent to the tuner.

To IIC device #192 (or #96 in write mode), we send three bytes. The first is a zero byte, presumably to select register zero. The second is the high byte (i.e. value >> 8). The third is the low byte (value AND 255).

Previously this document said that this information was theoretical (and untested), worked out using frequency charts and examining data sent to the tuner module.
Since then, WinTTX has been written, and it uses the following code to select which channel you are wanting:

Public Sub ttx_tunechannel(Channel As Integer)
  Dim chcopy As Long
  Dim chkhz As Long
  Dim tuneval As Long
  Dim RetCode As Integer
  [...set up UI for change of tuning...]
  ' Ensure channel is in range
  If (Channel < 21) Then Channel = 21
  If (Channel > 69) Then Channel = 69
  [...more UI stuff...]
  chcopy = Channel ' VB can't cast sensibly!
  chkhz = (((chcopy - 21) * 8000) + 471250)
  tuneval = (((chkhz + 38900) * 16) / 1000)

  IICdata = Chr(&HC0) & Chr(&H0)
  RetCode = PtrIIC_WriteBytes(DEVICE_TUNE, IICdata, 2)
  If (RetCode = False) Then
    [...error handling...]
    Exit Sub
  End If

  ' there should really be a 20ms delay here!
  ' (but it seems to work okay without it)
  IICdata = Chr((tuneval And &HFF00) / 256) & Chr(tuneval And 255)
  RetCode = PtrIIC_WriteBytes(DEVICE_TUNE, IICdata, 2)
  If (RetCode = False) Then
    [...error handling...]
    Exit Sub
  End If

  ' done!
End Sub
The omitted code handles various aspects of how WinTTX works (such as writing "Tuning to channel XX" to the status bar), and thus it is of no actual relevance to what I am trying to explain, hence it has been omitted.


Those good at maths and/or optimisations may spot a short-cut. If you wish to gain the tuning value for a fixed UHF channel, the following will work:

( ( UHF_channel << 7 ) + 5474 )

As you can see, the UHF channel is shifted into the high byte, so it is possible to insert sub-channel adjustments into the low byte if desired. I think each increment represents 31.25kHz from the selected UHF frequency.


Endnote: Disassembling the code within the Colin's teletext module shows that the above short-cut is used, with specific additional calculations for the fine tuning value. The primary difference, however, is that the formula used is:

( ( UHF_channel << 7 ) + 5478 )
Whether of not this minor variation will make much difference in the long run is something that remains to be seen.


RAM pinning

Here is the pinning of the memory used in the Ground Control receiver. This was worked out by following the circuitry, and this was done after the circuit images were annotated.

The two pins marked '*' can carry either the (not)Write Enable, or A11. Which is which is selected by cutting a track and soldering across a pad. By default, it appears that (not)Write Enable is carried on these pins.
The pin marked '#' is A10 from the point of view of the memory device, and A12 from the point of view of the Euro CCT. It is marked A12 here to reinforce the fact that it is wired for operation in "ghost row" mode and not for a second frame fetch.
The upper four pins are 'unused' in current designs, so it appears to be fairly simple to add more memory to the receiver.
This is as viewed from above.

RAM pinning; GIF, 5K



This information is provided in good faith, and no liability can be accepted for errors in the details within this document. Before examining and/or modifying your teletext receiver, please find yourself copies of the relevant data sheets, and also take the necessary anti-static precautions. E&OE.


Return to Teletext software index
Copyright © 2006 Richard Murray