Experimental very fast tape loading

Anything related to the tools Tap2Wav, Tap2CD, Tap2Dsk, Sedoric Disc Manager, Tape Header Creator, WriteDsk, and generaly speaking tools related to the management of Oric data files and devices.
User avatar
Chema
Game master
Posts: 2282
Joined: Tue Jan 17, 2006 10:55 am
Location: Gijón, SPAIN
Contact:

Re: Experimental very fast tape loading

Post by Chema » Tue May 08, 2018 1:52 pm

Indeed it was there in the Spam folder...

Can't imagine why. Must be related to your email server.

In any case I got the zip file... I will test as soon as I have time to put my Oric setup to work!

User avatar
Symoon
Archivist
Posts: 1374
Joined: Sat Jan 14, 2006 12:44 am
Location: Paris, France
Contact:

Re: Experimental very fast tape loading

Post by Symoon » Wed May 09, 2018 6:56 pm

Thanks Chema.

Anyone willing to test, here's still the same HIRES picture.
Do HIRES first ! :wink:

One has the loader at standard speed, the other at F16 speed. I'm interested to know if both work for all!
Thanks :)
ship_novalight_1.1g.zip
(21.3 KiB) Downloaded 54 times

User avatar
Symoon
Archivist
Posts: 1374
Joined: Sat Jan 14, 2006 12:44 am
Location: Paris, France
Contact:

Re: Experimental very fast tape loading

Post by Symoon » Tue May 22, 2018 10:12 pm

I'm currently working at reducing the loader's loading time. It's about 1.1 second and this is a penalty for multipart programs, expecially if they're short.
I hope I can reduce it to something like 0.9 seconds (or better?), by structuring the code differently.

User avatar
Symoon
Archivist
Posts: 1374
Joined: Sat Jan 14, 2006 12:44 am
Location: Paris, France
Contact:

Re: Experimental very fast tape loading

Post by Symoon » Thu May 24, 2018 12:10 pm

Questions for you guys.

For the price of 0,002 seconds of additional loading time ( :lol: ), I think I can fix (in Novalight) the ugly HIRES Loading bug from ROM 1.0, that displays "Loading" in the middle of a HIRES screen being loaded.

The question is: should I keep this bug, being typical of the ROM 1.0 glamour, or do you prefer it to be fixed?
(take into consideration that HIRES loading screens remain displayed for only a few seconds now ;) )

User avatar
Chema
Game master
Posts: 2282
Joined: Tue Jan 17, 2006 10:55 am
Location: Gijón, SPAIN
Contact:

Re: Experimental very fast tape loading

Post by Chema » Thu May 24, 2018 1:25 pm

Kill the bug!!!

:)

Hey, I just realized I completely forgot about checking the tap you sent me! Sorry, sorry, sorry... I'll do it ASAP.

User avatar
Symoon
Archivist
Posts: 1374
Joined: Sat Jan 14, 2006 12:44 am
Location: Paris, France
Contact:

Re: Experimental very fast tape loading

Post by Symoon » Thu May 24, 2018 3:05 pm

Chema wrote:
Thu May 24, 2018 1:25 pm
Hey, I just realized I completely forgot about checking the tap you sent me! Sorry, sorry, sorry... I'll do it ASAP.
No problem ;) Hope it works for you. Tested it fine on 90% of my Oric-1 and Atmos (10 machines, 1 fail).

BTW, I realise the idea of killing the HIRES Loading bug is not so useful...
I explain: even if Novalight prevents the line from being altered and erased leaving a dark line, Novalight is loaded first by... A standard CLOAD""! So in case of a loading screen followed by the main program, the next CLOAD will of course call the ROM bug and alter the HIRES screen anyway.
To sum it up: useful to load a screen, but useless if it is immediately followed by another CLOAD. Will try it anyway!

User avatar
Symoon
Archivist
Posts: 1374
Joined: Sat Jan 14, 2006 12:44 am
Location: Paris, France
Contact:

Re: Experimental very fast tape loading

Post by Symoon » Mon May 28, 2018 6:30 am

Symoon wrote:
Tue May 22, 2018 10:12 pm
I'm currently working at reducing the loader's loading time. It's about 1.1 second and this is a penalty for multipart programs, expecially if they're short.
Ok, 1st tests: the loader is now only 0.63 second long... But is not working yet, aaaargh ;)
Had to cut it in several parts, it's actually a pre-loader that will load the rest of the loader at high speed.
Also had to invert the bytes encoding and invert again once loaded, this saves 10% of loading time (remember, Oric programs use more "0" bits, but with the standard ROM, "0" bits are longer than "1" in the tape signal).

So, bug chasing now, but I think this is the last improvment I'll be working on: the way it works begins to be way too messy for myself ;)

User avatar
Symoon
Archivist
Posts: 1374
Joined: Sat Jan 14, 2006 12:44 am
Location: Paris, France
Contact:

Re: Experimental very fast tape loading

Post by Symoon » Tue May 29, 2018 12:50 am

Symoon wrote:
Mon May 28, 2018 6:30 am
Ok, 1st tests: the loader is now only 0.63 second long... But is not working yet, aaaargh ;)
I could spend a long time testing... Actually it does work on real machines, but not in Euphoric anymore.

I think I changed the thresholds a few versions ago, and Euphoric doesn't seem to like them.
That's a pity and I don't know why, the values I use should be working according to what I measured a while ago :roll:
Will try to see if I can fix that without impact on real machines. Sigh!

PS: Oric-1 display bug in Hires is not fixed, I thought it would... Pictures are still altered once loaded, but found why.

User avatar
NekoNoNiaow
Pilot Officer
Posts: 119
Joined: Sun Jan 15, 2006 10:08 pm
Location: Montreal, Canadia

Re: Experimental very fast tape loading

Post by NekoNoNiaow » Tue May 29, 2018 4:20 am

Symoon wrote:
Tue May 29, 2018 12:50 am
I could spend a long time testing... Actually it does work on real machines, but not in Euphoric anymore.

I think I changed the thresholds a few versions ago, and Euphoric doesn't seem to like them.
That's a pity and I don't know why, the values I use should be working according to what I measured a while ago :roll:
Why do you care? If the real machines accept it then it is Euphoric which needs to be bug fixed, not your code!

You should never adapt a program so that it runs on an emulator when it runs perfectly on the original hardware, otherwise you end up with a situation like the NES and SNES situation a few years ago where most of the recent software ran only on emulators and did not work at all on the real machines.

If Euphoric cannot be updated, then time to switch, but In My Not So Humble Opinion you should not compromise on that point, the absolute reference is the original hardware.

User avatar
Symoon
Archivist
Posts: 1374
Joined: Sat Jan 14, 2006 12:44 am
Location: Paris, France
Contact:

Re: Experimental very fast tape loading

Post by Symoon » Tue May 29, 2018 6:38 am

NekoNoNiaow wrote:
Tue May 29, 2018 4:20 am
Symoon wrote:
Tue May 29, 2018 12:50 am
I could spend a long time testing... Actually it does work on real machines, but not in Euphoric anymore.

I think I changed the thresholds a few versions ago, and Euphoric doesn't seem to like them.
That's a pity and I don't know why, the values I use should be working according to what I measured a while ago :roll:
Why do you care? If the real machines accept it then it is Euphoric which needs to be bug fixed, not your code!
Of course, the main target is real machine indeed! But Euphoric was the only tool for me to test and see in detail what happens :mrgreen:
(no other emulator that I know of accept such special WAV files + have a monitor)

So even if the thresholds are a bit different, if I can keep it working on Euphoric without affecting real hardware, I will. But if not, real hadware has the priority ;)

User avatar
iss
Squad Leader
Posts: 670
Joined: Sat Apr 03, 2010 5:43 pm
Location: Bulgaria
Contact:

Re: Experimental very fast tape loading

Post by iss » Tue May 29, 2018 10:20 am

Symoon wrote:
Tue May 29, 2018 6:38 am
(no other emulator that I know of accept such special WAV files + have a monitor)
Oricutron accepts WAV's, has monitor+debugger and works with your latest ship_novalight_1.1g.zip. :)
What is interesting voilier_F16_1.1g.wav works fine, but with voilier_std_1.1g.wav loading works by me only if I didn't switched to HIRES before CLOAD"".
I.e.:
Start Oricutron, type: HIRES:CLOAD"", press F1, Insert tape - voilier_std_1.1g.wav -> nothing happens (I think the loader is loaded OK, but then it loops at BCS forever.
but:
Start Oricutron, type: POKE#BFDF,30:CLOAD"", press F1, Insert tape - voilier_std_1.1g.wav -> voila! :)

User avatar
Symoon
Archivist
Posts: 1374
Joined: Sat Jan 14, 2006 12:44 am
Location: Paris, France
Contact:

Re: Experimental very fast tape loading

Post by Symoon » Tue May 29, 2018 11:52 am

iss wrote:
Tue May 29, 2018 10:20 am

Oricutron accepts WAV's, has monitor+debugger and works with your latest ship_novalight_1.1g.zip. :)
What is interesting voilier_F16_1.1g.wav works fine, but with voilier_std_1.1g.wav loading works by me only if I didn't switched to HIRES before CLOAD"".
I.e.:
Start Oricutron, type: HIRES:CLOAD"", press F1, Insert tape - voilier_std_1.1g.wav -> nothing happens (I think the loader is loaded OK, but then it loops at BCS forever.
but:
Start Oricutron, type: POKE#BFDF,30:CLOAD"", press F1, Insert tape - voilier_std_1.1g.wav -> voila! :)
Ooooh that's good news indeed! Thanks!
I thought I read Oricutron was working with ORT files and didn't handle de WAV files fully yet - but maybe that was just for saving data... Or very old news! I need to give it a try.

What happens with the standard speed loader is quite strange. It is quite possible that I made a mistake somewhere (some init missing when in Hires mode?); unless you think it could be something with the emulator?

User avatar
Chema
Game master
Posts: 2282
Joined: Tue Jan 17, 2006 10:55 am
Location: Gijón, SPAIN
Contact:

Re: Experimental very fast tape loading

Post by Chema » Tue May 29, 2018 1:04 pm

Symoon wrote:
Tue May 29, 2018 11:52 am
What happens with the standard speed loader is quite strange. It is quite possible that I made a mistake somewhere (some init missing when in Hires mode?); unless you think it could be something with the emulator?
If I had to bet, I'd say that it is an uninitialized variable, probably in zero page. That or the typical lda 00 instead of lda #00, which works if zero page address 00 contains 00, but doesn't if it contains any other value. The HIRES ROM routine uses zero page pointers and vars for sure.

But I usually don't win bets anyway :)

User avatar
Symoon
Archivist
Posts: 1374
Joined: Sat Jan 14, 2006 12:44 am
Location: Paris, France
Contact:

Re: Experimental very fast tape loading

Post by Symoon » Tue May 29, 2018 1:05 pm

Chema wrote:
Tue May 29, 2018 1:04 pm
Symoon wrote:
Tue May 29, 2018 11:52 am
What happens with the standard speed loader is quite strange. It is quite possible that I made a mistake somewhere (some init missing when in Hires mode?); unless you think it could be something with the emulator?
If I had to bet, I'd say that it is an uninitialized variable, probably in zero page. That or the typical lda 00 instead of lda #00, which works if zero page address 00 contains 00, but doesn't if it contains any other value. The HIRES ROM routine uses zero page pointers and vars for sure.
I'll have to check that. What puzzles me is that it's the exact same table (in the C code) that is sent, either un F16 or standard format.

User avatar
iss
Squad Leader
Posts: 670
Joined: Sat Apr 03, 2010 5:43 pm
Location: Bulgaria
Contact:

Re: Experimental very fast tape loading

Post by iss » Tue May 29, 2018 2:05 pm

Quick news if I type HIRES:POKE#21F,0:CLOAD"" then voilier_std_1.1g.wav works! Of course the hires screen has 'Searching...' just like ROM v.1.0 error :). I'll check what exactly the routine 'PrintSearching' at $E57D do...
BTW, both loaders (f16 and std) are exactly the same, right?

EDIT: The only significant difference I found in routine at $E57D is: when executed from TEXT it uses 746 cycles, but from HIRES - only 86 ... and probably this leads to kind of de-synchronization. I'm not sure this can be an emulator issue too, but definitely if printing on status line is executed then loading works - which is not bad at all. :)

Post Reply