24

Screenshot showing stripes

When loading a program from tape on ZX Spectrum you could see those blue and yellow stripes around the splash screen.

I might be mistaken but I believe those were even sometimes used for quite advanced visual effects. For instance I recall a game where the splash screen featured a rocket and those stripes were showing through the part of screen where the flames coming out the rocket nozzles should have been, as if that part of the screen was made transparent with some kind of alpha channel. Not sure if it was during loading only or during the gameplay.

Were these stripes there for some purpose other than pure visual?

1
  • Welcome to Retrocomputing Stack Exchange. This is an interesting question - I have assumed that this was an unintended side-effect similar to crackling / beeping noises in other machines, but I don't know for certain. You might want to check out the tour to get that badge.
    – wizzwizz4
    Jun 2, 2017 at 21:13

2 Answers 2

26

Actually, the screen stripes while loading from tape first occurred on the ZX-81 - Where they were a result of Sinclair's typical savvy nature - the display and the "EAR IN/MIC OUT" had to share a pin on the ULA and thus made the (whole) screen flicker in stripes during tape loading and saving. This actually proved useful as a visual clue the computer still did something and also the stripe width allowed a bit of visual feedback on how well the computer "could hear" the tape.

Thus the Spectrum got the same mechanism, this time actually intentional by code in the tape loading and saving routine that quickly changes the border colour and thus creates the loading stripes. By only changing the border colour, this also added the luxury of having a usable central screen display during loading that could display type and name of a tape header block just read.

The border stripe width is a direct indication of the current bit rate received from the tape - the narrower the stripes, the higher the bit rate. Thick red and cyan bands indicated a "wait for header" condition, and thin yellow and blue stripes mean the computer is receiving a header or data block.

With custom load routines, the border flicker could actually be controlled during the loading - Some games simply changed part of the screen area in sync with the border colour change - This could display nice things like rounded edges on the loading screen.

Custom loaders could also change the load order for load screens from its normal, linear fashion towards something more interesting - There were some famous loaders like MadLoad that loaded screens in square chunks, following some made-up patterns on the screen.

Other custom program loaders displayed a rainbow border during loading by modifying the colour selection from the standard red/cyan/blue/yellow scheme to more colours.

Doing fancy things with the border colour outside a custom program loader is actually a bit simpler - You don't have to satisfy both the loading and the border effect routine with adequate timing and can concentrate on the border only. By counting the time between vertical retraces and switching the border colours with exact timing, you can, for example, extend colours from the main screen area into the border. Aquaplane was a game known for this effect, it extended the horizon and sea displayed into the border colour, imitating a higher screen resolution than what actually was there. (Although I found the game rather boring apart from this effect)

2
  • 1
    Minor correction, after checking: only MIC OUT shares a pin with sync on a ZX80 and 81 (specifically, from software, it's triggered like a switch just by the simple fact of inputting from or outputting to appropriate ports); EAR IN is completely separate, being the high bit of the even-numbered port. As a result, the ZX80 with its original ROM doesn't show any sort of pattern while loading, only while saving — it just turns sync on and leaves it on for the former. The ZX81 ROM, when used in either machine, deliberately reproduces the saving patterns while loading as user information.
    – Tommy
    Jun 13, 2017 at 1:10
  • 1
    some demos even used border to write texts (with big fonts though due to CPU speed limits) like Mega Border Demo great thing for testing contention on emulators ...
    – Spektre
    Sep 9, 2017 at 9:30
16

No, they're purely for communication with the user. Coloured stripes = loading, slow colour changes = not loading.

Setting the border colour on the Spectrum is achieved with a simple port output. The stripes are an elementary raster effect — all that's happening is that the tape loading routine is changing the border lots of times within a frame. If you wrote a BASIC program like:

10 BORDER 2
20 BORDER 4
30 GOTO 10

Then you'd see a similar effect, though with much larger stripes because of the overhead of interpreting BASIC.

When a tape is loading successfully, the border colour changes on every input level change. That's a lot safer than putting anything less ephemeral on the screen because it communicates without modifying any RAM, and therefore can't possibly interfere with whatever's being loaded.

Some custom loaders leave the border alone and do things like show a downward counter; the +3 doesn't do border stripes while loading from disc because they'd be a disproportionate cost — the FDC doesn't have DMA access so the Z80 is shuffling bytes to RAM as they come in, and can do without the interruption.

1
  • More than any explanation I've read, this answer drives home that the screen is persistent, and updated from top to bottom. Seeing the code that can achieve something like the picture shown in the question made it click for me. Dec 15, 2017 at 19:26

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .