10

Context

The Amstrad CPC 464 has a very stable RGB video output. By "stable" I mean that the image on the CRT monitor does not move, wiggle, shake in any way. The electron beam draws every pixel with the same color and intensity on the same spot each time. (Many other computers at the time (1984) had less pleasing display, sometimes because of noise, often because of composite video output, which causes patterns on alternating lines, sometimes moving.)

Different context

I always noticed that when the Amstrad CPC was reading from a cassette tape, the image on the monitor would very slightly wave, somehow like a flag, with a period about one second or a little smaller. The effect is subtle (the displacement may be a fraction of a line width) but real.

It's not an effect at the scale of one line or a couple of lines. Rather the whole image appears to wave.

I don't know if the 464+ were affected.

More precisely, how to reproduce

  • Turn monitor and computer on (obviously a real one, not any sort of emulator or even hardware reimplementation).
  • If it's a CPC 664 or 6128, issue '|TAPE' to select tape instead of disc.
  • Issue command LOAD" or CAT and press Enter.

As soon as the command is entered, a mechanical relay activates, allowing tape motor start and the effect on the display appears.

The effect disappears as soon as the relay deactivates, stopping motor, whatever the reason (program finished or aborted loading, Esc pressed, whatever).

I think that the effect appears even if the motor is not actually turning (motor only starts if the user press mechanical "play" button on the tape drive, user can press "stop" at any time to stop the motor). The relay being activated is enough for the effect to appear.

Considered experiments

I'm considering the following experiments:

  • reproduce in basic conditions (I have CPC464 and a green screen GT65).
  • confirm if relay is enough by starting and stopping tape motor while relay is activated
  • use MP1 SCART adapter plugged to a TV to see if the effect appears on the TV (alas since the effect is typically analog and I no longer have a CRT TV, no effect will probably happen on a digital TV).
  • figure out how to activate the relay through a BASIC or assembly OUT command, to see if the relay itself is enough, or if effect comes from something else that the ROM does when reading tape
  • with a modern device, record a movie of the screen when stable and when weaving to show the effect
  • (won't have time) process the movie to showcase and measure the effect

Question: what causes this effect?

What causes this effect? Is it some kind of power distribution change in the computer or monitor when the relay is active? Something that affects signals going out from the computer, or the way the monitor displays them, like flakey sync signals? Is it some kind of hardware priority change to ensure computer stability or something like that? Why does this happen only when tape is active?

  • 2
    Did test items 1 and 2 on my old CPC464. Results: (1) reproduced. (2) Relay alone is not enough to trigger the effect. Effect can be started and stopped at will by starting/stopping tape motor. So, is it some kind of analog effect, like alteration of sync signals. Perhaps incorrect grounding or motor sucking too much current? – Stéphane Gourichon Jun 16 '16 at 15:17
  • 1
    I'd wager power distribution on the grounds that subpixel waving is pretty much guaranteed to be an analogue effect, sync is generated digitally, and that one of the cost optimisations of the CPC range is that the monitor and keyboard have only a single power supply. I'd test an external deck and an external screen if possible. – Tommy Jul 12 '18 at 15:16
  • I'd propose another experiment: start/stop tape motor while cassette player isn't even connected to the computer. I'll bet it's simple magnetic interference between the cassette motor and the CRT. A CRT display uses magnetic fields to scan the beam vertically and horizontally, and external magnetic fields will move the beam. – jeffB Jul 12 '18 at 19:04
  • Thanks for your ideas. For a while, because my monitors don't provide the +12V necessary for the CPC 6128, I have used a cable to allow using a PC power supply. I can test that with a CPC 464 and see if it changes the effect. Probably a few days from now. – Stéphane Gourichon Jul 13 '18 at 5:39
7

This effect is typically caused by a conflict of interrupts.

My experience of the CPC specifically is limited, but I've seen this on other machines from this era.

Most computers of this vintage used interrupts from the video controller chip to feed information to the display. Analogue displays would provide an interrupt for frame start and often further interrupts for line start. On interrupt, the CPU would copy a line of data into a buffer for the video controller to feed to the modulated output.

When the cassette was active, it too will be generating interrupts. It was unusual for a separate processor to be provided to handle the cassette deck and so the main CPU did the work.

The cassette hardware would provide interrupts to indicate that buffered data was available to read. The CPU had to handle this to ensure that data was not lost - the tape wasn't going to stop.

This could mean that occasionally the screen interrupt would be missed and the display would flicker slightly.

  • 2
    Thank you @Chenmunka for your answer. Overall it makes sense, though AFAIK the details are different. The CPC has no interrupt to the CPU at the line level (there is a 300Hz interrupt available, 6 per frame), and the display works even if interrupts are disabled at the CPU level. It is possible because architecture interleaves access to the RAM by CPU and display at all times. Yet I hope we can get some details/confirmation in what the tape relay activation changes in this regard. – Stéphane Gourichon Jun 15 '16 at 8:21
  • 3
    The effect you describe in your answer is tipically found in the ZX81 / TS1500 computer, which effectively use NMI interrupts to build the display using some CPU power instead of a separate dedicated chip. It is not the case on the Amstrad CPC, which could keep showing a display even if the CPU is kept disabled (for example by pulling down BUSRQ) – mcleod_ideafix Jun 15 '16 at 9:48
  • 1
    @StéphaneGourichon further to that, the tape input doesn't generate interrupts on a CPC. It's a CPU-visible bit that is polled, exactly like the ZX Spectrum, the MSX, etc. It isn't fed to an interrupt source as it is on e.g. the Commodores. – Tommy Jul 12 '18 at 14:45

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.