I have an old russian Sinclair Spectrum clone called Урал 8/64K (Ural 8/64K). It used to cost 998 roubles at the time of its release, in 1991. It has a Z80 CPU, 48KB of RAM and 16KB ROM containing a BASIC interpreter.

Similar to the original Spectrum, it connects to a TV for video and audio output and to a magnetic casette recorder for saving and loading user programs. But there is a slight difference: it has RGB and video sync (RGBs) outputs, instead of the more usual composite or RF modulated video. The hardware manual contains schematics that describe a way to modify a “third-generation” russian TV to accept the input.

TV modification

The computer was given to me as a birthday gift at a very young age. I was never able to use it because I didn’t have a modified TV, but I read the manuals thoroughly, learned its BASIC dialect and imagined the programs I could write. Recently I dug it out of the closet determined to make it work.

First I tried to replace the DIN-7 connector on the TV cable with a SCART connector (which can carry RGBs), and connect it to a TV. That didn’t work, probably because I got the DIN pinout wrong.

Then I asked ioch to use his Rigol DS1052E oscilloscope to look at the signals, hoping to understand them better.

The setup

I connected the probe to what I think is the Y (grayscale) signal. The video is scanned at about 15.63 kHz per line, 50 Hz per frame. It is possible to trigger the scope on frame start by setting the trigger mode to pulse width greater than about 0.1 ms. Then each line of video is separated by shorter pulses with the pixel values between them. This can be seen in the following graph, containing the start of a frame and some pixels:

Graph

The data from this graph was obtained using the oscilloscope’s USB interface with Python and python-usbtmc. With some further processing an image can be formed:

Screenshot

I managed to make the frame processing to be done in real time at the speed of about one frame per second, which was interesting for some exploration, but not usable enough. The next thing I’ll try is fixing the SCART interface.