I was a late Spectrum dev, as a Brazilian geek several years behind the international market due to draconian restrictions on computer imports at the time (also, dad not rich enough to get me an Amiga...). Got one of my programs survive for posterity: https://worldofspectrum.org/archive/software/utilities/stk-y... (unfortunately only loading screenshots here; check YS #75).
That was a powerful hacking/debugging/programming utility. I am still proud of the HILOAD command which was capable of loading files from tape in any condition: if any error was found, this command would fill a separate buffer with the relative address of every error. Then you could use other commands to inspect the data and painstakingly recover it by guessing the correct value for damaged bits or bytes (they utility could dump memory in many ways, including some popular encodings of sprites for games). There was also a whole-block SHIFT command useful for this task because a loading error could make all following bytes to be shifted left or right some bits, because the tape data format didn't have a byte-boundary delimiter, it was just a stream of bits.
That was a powerful hacking/debugging/programming utility. I am still proud of the HILOAD command which was capable of loading files from tape in any condition: if any error was found, this command would fill a separate buffer with the relative address of every error. Then you could use other commands to inspect the data and painstakingly recover it by guessing the correct value for damaged bits or bytes (they utility could dump memory in many ways, including some popular encodings of sprites for games). There was also a whole-block SHIFT command useful for this task because a loading error could make all following bytes to be shifted left or right some bits, because the tape data format didn't have a byte-boundary delimiter, it was just a stream of bits.