Progress bar 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
Symoon
Archivist
Posts: 2301
Joined: Sat Jan 14, 2006 12:44 am
Location: Paris, France

Progress bar loading

Post by Symoon »

https://www.youtube.com/watch?v=B-OKtn6fBVA

Will work on Orics with ROM 1.1 (impossible with ROM1.0 unless the program takes loads of RAM).
The program is using the lower TEXT line so it works both in HIRES or TEXT mode.
The progress bar flashes as the program is loading, and inverts the video as the bar is progressing, so it does not hide or destruct a screen that could have been loaded before. It also avoids using any character as they may be redefined by a loaded program.

The goal was to have it running, being visible and hiding nothing, whatever the state (Hires, and so on). It could be nicer (colour, chars...) at the risk of being affected by pre-loaded modifications.
This can be changed to have sexier look, but destructive for the screen....
User avatar
Chema
Game master
Posts: 3013
Joined: Tue Jan 17, 2006 10:55 am
Location: Gijón, SPAIN
Contact:

Re: Progress bar loading

Post by Chema »

Really nice!

I tried something similar with the fast loader for SkoolDaze, where a progress bar was shown (in my case it went from left to right and bounced back using two colors) but the code plus the loader used up too much space in page 1 leaving not enough room for he stack :/
User avatar
Symoon
Archivist
Posts: 2301
Joined: Sat Jan 14, 2006 12:44 am
Location: Paris, France

Re: Progress bar loading

Post by Symoon »

Thanks!
It must have been another challenge with a fast loading routine...
Here I had a luxury of available cycles ;)

I forgot to say the program could be loaded anywhere in RAM, and seems to work in page 1.
It also works for slow speed.
Need to keep testing, write a manual, and will make it available.
User avatar
iss
Wing Commander
Posts: 1637
Joined: Sat Apr 03, 2010 5:43 pm
Location: Bulgaria
Contact:

Re: Progress bar loading

Post by iss »

Nice and useful indeed!
What about to merge it with the parity checker and mark in color where check is failed... just and idea ;).
BTW, Is there any particular reason to support only ROM1.1 (except different address of the used rom routines) ?
User avatar
Symoon
Archivist
Posts: 2301
Joined: Sat Jan 14, 2006 12:44 am
Location: Paris, France

Re: Progress bar loading

Post by Symoon »

Marking in color wouldn't be easy (attributes management + code size increasing) but that's a very good idea!

About ROM 1.0/1.1: in ROM 1.1, loading routines have been re-written and divided in several sub-routines:
- initialize the VIA
- display 'Searching'
- wait for synchro and read header
- display loading and program name
- read a byte
-check if program ends
... and so on!
That means you can call these subroutines and put your own code in between.

But in ROM 1.0, almost everything is done without subroutine, so you can't insert your code.
The only solution would be to copy in RAM the Atmos routines to modifiy them at will, but then my code would jump from something like 130 bytes to probably 1 or 2 kb.

This opens two other problems for me:
1/ Tried at least to detect the ROM1.0 with the progress bar, and then simply CLOAD the next program (to make it transparent with ROM 1.0), but I didn't even manage to. Geoff Phillips gives hints on how to proceed in his book, but this stops the auto-run. So after few days of trying various things, I gave up.
2/ there's a project I started long ago but totally forgot that could be interesting: make standard, minimal and universal (ROM 1.1 or 1.0) loading tape routines in RAM, whatever the size (1k ?) that could be the starting point of any further "tape loading modification" that would then work on any ROM.
User avatar
iss
Wing Commander
Posts: 1637
Joined: Sat Apr 03, 2010 5:43 pm
Location: Bulgaria
Contact:

Re: Progress bar loading

Post by iss »

Thanks for this useful info, Symoon! When time allows I'll look at 1.0 routines for my education ;).
User avatar
Steve M
Squad Leader
Posts: 787
Joined: Fri Mar 24, 2006 3:33 am
Location: Cumbria, UK
Contact:

Re: Progress bar loading

Post by Steve M »

Interesting idea. It doesn't say Searching or Loading on the status bar so why not put the display up there out of the way of the main screen ?
User avatar
Symoon
Archivist
Posts: 2301
Joined: Sat Jan 14, 2006 12:44 am
Location: Paris, France

Re: Progress bar loading

Post by Symoon »

Steve M wrote: Wed Aug 30, 2017 5:03 pm Interesting idea. It doesn't say Searching or Loading on the status bar so why not put the display up there out of the way of the main screen ?
It doesn't here because it's a HIRES screen loading ;)
Searching and Loading are still there in TEXT mode. I first planned having the progress bar up there, but it wouldn't work anymore in Hires screen. Only the last 3 text lines are common to both modes!
User avatar
Steve M
Squad Leader
Posts: 787
Joined: Fri Mar 24, 2006 3:33 am
Location: Cumbria, UK
Contact:

Re: Progress bar loading

Post by Steve M »

Oh. Come to think of it, I'm not sure if/when I've loaded a tape from the HIRES screen. :roll:

I guess it would be more useful on the text screen(?) as you can see the progress of the HIRES picture being loaded.
User avatar
Symoon
Archivist
Posts: 2301
Joined: Sat Jan 14, 2006 12:44 am
Location: Paris, France

Re: Progress bar loading

Post by Symoon »

Very true about the Hires screen loading not really needing a progress bar. But you can:
1- load a Hires screen
2- then load a big program
=> for the 2nd program, the progress bar could be useful, and in Hires screen. :mrgreen:

Anyway, I'm currently cleaning the source code and writing a doc before release of the 1st version. Other versions with different looks will probably be released (maybe less "universal" with existing programs, but nicer and with errors detection display).
Letting the user chose the starting address on screen is an idea...
User avatar
Chema
Game master
Posts: 3013
Joined: Tue Jan 17, 2006 10:55 am
Location: Gijón, SPAIN
Contact:

Re: Progress bar loading

Post by Chema »

I always wondered why the Oric designers did not include any way of watching the progress of loading. Border colour changes, as in Speccy or C64, but also something simpler as a small animation in one corner of the screen.

It is horrible to keep waiting for a game to load when the Oric had hanged up after the first 3 seconds :/ ... the noise stops and the machine keeps on Loading.. or, even worse in Hires mode, where you simply can't see what is going on at all!

I guess it is just one of the many little details the designers missed (such as being able to access overlay ram without an interface, a way to deactivate serial attributes, buffering in the expansion port,...).
User avatar
Steve M
Squad Leader
Posts: 787
Joined: Fri Mar 24, 2006 3:33 am
Location: Cumbria, UK
Contact:

Re: Progress bar loading

Post by Steve M »

Yeah. I like the loading used by the Electron which loaded in blocks and it said on screen which block was loading. If one part failed you could go back and try loading that again without having to redo the whole lot.

It would be handy to know how much is left to load - i.e a countdown rather than a count up. Or something like percentage shown. Would that sort of thing be possible or is there too little room?
User avatar
Symoon
Archivist
Posts: 2301
Joined: Sat Jan 14, 2006 12:44 am
Location: Paris, France

Re: Progress bar loading

Post by Symoon »

I second Chema on many missed opportunities that would have made life much easier on Oric ;)
Steve M wrote: Thu Aug 31, 2017 1:58 pmIt would be handy to know how much is left to load - i.e a countdown rather than a count up. Or something like percentage shown. Would that sort of thing be possible or is there too little room?
If you look carfully, right after the progress bar program has loaded, it displays immediately the boundaries of the progress bar. Thus you know where it starts, and where it ends.
Displaying a time estimation would be complicated because:
- there are two possible speeds (Fast or Slow)
- according to the data, in Fast mode, the length will be different ("0" longer thant "1")

Percenatge: I begun working at it last year (to display the % on a single byte on screen), but it's faaaar from finished, not sure it could work fast enough, and would make the program about 3 times bigger. So I wouldn't say "impossible" yet, it could be possible but for a specific program, that knows where in RAM it can load the progress bar program.
That's something I'd like to try some day (I'd also love to finish the turbo routines ;) )

EDIT: by the way, the progress bar is divided in 32 parts, so each byte simply means about 3% of the program has loaded ;)
User avatar
Symoon
Archivist
Posts: 2301
Joined: Sat Jan 14, 2006 12:44 am
Location: Paris, France

Re: Progress bar loading

Post by Symoon »

Finally, after chasing the (hopefully) last bugs, there it is.
Read the docs and have fun ;)
Progress-v1.1.zip
(184.74 KiB) Downloaded 430 times
Feedback appreciated. For instance, do we really need the start/end boundaries? Their management takes about 12% of the code - nothing wrong with this version, but it could be saved for further ones.
User avatar
Symoon
Archivist
Posts: 2301
Joined: Sat Jan 14, 2006 12:44 am
Location: Paris, France

Re: Progress bar loading

Post by Symoon »

Currenly working at ISS idea.
Should work with 12 extra bytes only!
Post Reply