At some point Amstrad Action, probably around 1987 or 1988, printed a type-in that was able to load standard ZX Spectrum tape files, basically a simple port of the LD-BYTES routine [1]. (EDIT: thinking about it, the loader was probably published earlier, maybe 1985 or 1986, but I only found a use for it later when I found a friend with a Spectrum).
I was inspired by this as I had an Amstrad CPC and my friend had a Spectrum, and wanted to make a dual-format game with an Amstrad loader at the beginning with CPC specific stuff that loaded the Spectrum game and provided a different API via a jumpblock.
Of course, not wanting to have to use a Spectrum to write these files, I decided I needed to figure out how this Spectrum loader worked, so I disassembled it, borrowed the Spectrum ROM disassembly from the library [2] and figured out what they'd done to convert it. At that time, I had limited understanding of the CPC's handling of WAIT (which completely messed up my understanding of how T-states were different between ZX and CPC), but managed by sheer luck to get good enough timing in my port that it worked well and both Spectrum and Amstrad could read my tapes.
We got bored of writing the actual game shortly after, but I submitted my ZX saver as a type-in listing to the magazine, who replied back saying they didn't want to publish it.
As a coda to this story, a year or so later I sold the CPC to fund my purchase of an Amiga, and never touched a CPC again until 25 years later when I bought one on ebay. I never lost the love of tape loaders though, and later in 2014 wrote the demo "Breaking Baud" [3] which had all sorts of crazy features like realtime decompression whilst reading from tape, so had a nominal speed of 2688 baud, but in practice could read data much faster depending on compressibility - in the demo every time something is drawn over the top, it's actually reading an entire new screen of data but compressed using RLE and deltas to the previous contents. Lots of technical detail here in the readme [4].
[1] Starting here https://github.com/ZXSpectrumVault/rom-disassemblies/blob/38...
[2] Page 15 (20 in the PDF) onwards from https://k1.spdns.de/Vintage/Sinclair/82/Sinclair%20ZX%20Spec...
[3] https://www.youtube.com/watch?v=D62jpqZ6TG4
[4] https://github.com/ralferoo/breaking-baud/blob/master/docs/t...