-
Notifications
You must be signed in to change notification settings - Fork 1
ModulationScheme
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.
___
| |___| 489μs, '0' symbol
_______
| |_______| 977μs, '1' symbol
_
| |_| 244μs, '0' symbol
___
| |___| 489μs, '1' symbol
_
| |_| 216μs, '0' symbol
__
| |__| 326μs, '1' symbol
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
- The first two symbols are based on the timings of Turbotape.
- The longer symbols are based on the timing of the '1' symbol on the ZX Spectrum ROM.
- The relative difference between longer symbols is small, so playback speed differences greater than 10% have to be compensated for in the loader.
- 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.
- Longer symbols encode more bits. This is a form of Huffman encoding that optimises bit rate even when using longer symbols.