Okay, I just released Tap2F16, you can find it with the other Oric Tape Tools, exactly here:
https://sourceforge.net/projects/euphor ... s/Tap2F16/
Feedback welcome
This tool, based on Fabrice's TAP2WAV, converts Oric .TAP files to 44kHz (big) WAV files designed to work on any standard Oric, but that will load about 1.6 times faster than the usual FAST speed - "F16" standing for "Fast *1.6".
One may wonder "why?", since TAP2CD from Fabrice already loads programs much, much faster. Well here the challenge was: what can be achieved with zero hadware or software change? So a few more programs work, and it also works on Oric-1's ROM 1.0. No impressive upgrade but funny to see that digital player reliability allows an average 38% improvement.
THE IDEA
So you got it: no special routines here, just an optimized tape signal. It was based on a study of the ROMs.
The standard signal, in FAST, codes a bit "1" by a 416 microseconds sinusoid (2 x a 208µs duration), and a "0" by a 624µs sinusoid (3 x 208µs). When reading a tape, the VIA 6522 detects a sinusoid, then sends a flag to the Oric, which will start counting the time between it and the next one (and so on).
Then Oric compares this duration to 512µs (which is the middle between 416 and 624µs), and stores a "0" bit for a longer duration, or a "1" for a shorter duration. So there is an 20% margin which was useful with 1980's tape players running at different speeds.
This decoding method is interesting with nowadays digital players, which offer good audio quality and perfect reading speed. So let's try and save loading time on two sides:
1- the 20% margin is now useless
2- the "1" bit has no minimal length! So it can be much shorter... Its only limits are harware response and ROM decoding time.
After painful counting of ASM instructions duration, confirmed by testing with a small program, the results show that the minimal duration for a "0" is 529µs (at 44kHz, which is 23 samples), and 115µs for a "1" (5 samples). Try to remove ONE sample to any of these values, and the Oric won't load anymore.
So you can see right now that you'll need a PERFECT WAV player, without any audio interference - a single sample not read and it's over. For instance, on my PC, I need to shut down WiFi, and even to reboot it from time to time - seems after a while it's not able (or doesn't have enough ressources anymore) to read WAV files perfectly.
This has been successfully tested on Atmos and Oric-1, even the display of the program name, or the making of a whole byte is OK, the Oric still has time to compute them even if the stop bits are shorter (and BTW, I set 3 stop bits, instead of 4 with TAP2WAV, to save a little more time).
THE PROGRAM
You should find TAP2F16.EXE compiled in two versions: 16 and 32 bits, as well as the source code in TAP2F16.C. 16 bits if for older machines still running real MS-DOS, 32 bits should run on recent computers (even 64 bits)
Just type: TAP2F16 yourprogram.TAP wavfilename.WAV
In case of failure, I have added a "-o" ("old machine") switch which adds an extra sample (so 23µs) to each "0" and "1" bit. I'm not sure it's really useful, but it may help if your Oric fails to load (or if the comptuer fails playing the WAV file properly!), at the price of a longer loading time...