Skip to content
Going Digital (Peter Knight) edited this page Aug 21, 2013 · 6 revisions

Versaload uses a symmetrical pulse system with multiple pulse lengths, in a similar way to all existing ZX Spectrum, Commodore and Amstrad tape loading systems.

ZX Spectrum ROM tape loader

 ___
|   |___|         489μs, '0' symbol
 _______
|       |_______| 977μs, '1' symbol

ZX Spectrum commercial turbo tape loader (Microsphere)

 _
| |_|               244μs, '0' symbol
 ___
|   |___|           489μs, '1' symbol

Commodore turbo tape loader (Turbotape)

 _
| |_|               216μs, '0' symbol
 __
|  |__|             326μs, '1' symbol

Versaload

Versaload uses 8 symbols based on the timings above.

 _
| |_|               220μs, '00' symbol
 __
|  |__|             330μs, '01' symbol
 ___
|   |___|           440μs, '100' symbol
 ____
|    |____|         550μs, '101' symbol
 _____
|     |_____|       660μs, '1100' symbol
 ______
|      |______|     770μs, '1101' symbol
 _______
|       |_______|   880μs, '1110' symbol
 ________
|        |________| 990μs, '1111' symbol

Note the following important differences

  1. The first two symbols are based on the timings of Turbotape.
  2. The longer symbols are based on the timing of the '1' symbol on the ZX Spectrum ROM.
  3. The relative difference between longer symbols is small, so playback speed differences greater than 10% have to be compensated for in the loader.
  4. The symbols encode multiple bits. Junk bits may need to be added to the end of a data block. Due to the structure of the code, it is always faster to add '0' bits instead of '1' bits.
  5. Longer symbols encode more bits. This is a form of Huffman encoding that optimises bit rate even when using longer symbols.

Clone this wiki locally