Log inRegister an accountBrowse CSDbHelp & documentationFacts & StatisticsThe forumsAvailable RSS-feeds on CSDbSupport CSDb Commodore 64 Scene Database
You are not logged in - nap
CSDb User Forums


Forums > CSDb Entries > Release id #217506 : Sparkle 2.1
2022-05-04 09:11
Bitbreaker

Registered: Oct 2002
Posts: 498
Release id #217506 : Sparkle 2.1

Just saw the new range of rotation speeds the new sparkle tolerates and pondered a bit about it. It might work out well on Vice, but does it really make sense to support such a wide range on real hardware? In fact as zeroes are read when no flux inversion happens withion a given time frame, quite a few more zeroes will be read if rotation speed goes way under spec? The time frame is given by the speedzone. If i am wrong, feel free to correct me. I understand that any mean to cease out read errors is welcome, as the sector checksum is the weak point.
 
... 1 post hidden. Click here to view all posts....
 
2022-05-04 13:49
Sparta

Registered: Feb 2017
Posts: 35
I actually tested this on a real drive. The lowest rpm I could set on one of my old belt-driven 1541s was 277 and Sparkle had no problem reading the disk at this speed so I think VICE is correct.

I guess it is because there cannot be more than two 0s in the GCR encoded data. In zone 3, every bit is read in a 3.25-microsecond time frame (if I understand it correctly), so the 3rd bit is read 0 if there is no flux inversion within 6.5-9.75 microsenconds after the last inversion. But this would mean a 33% slowdown (200 rpm). So technically, loaders could handle much lower speeds than Sparkle's 269 rpm.

I may be overestimating the relevance of this. All in all, it is just another measure to improve reliability.
2022-05-05 09:52
Krill

Registered: Apr 2002
Posts: 2804
Quoting Sparta
I may be overestimating the relevance of this. All in all, it is just another measure to improve reliability.
Assuming that tolerance for a large range of average rotational speeds is a proxy for tolerance of extreme wobble, drives currently should be no worse than 130 cycles / 124 cycles * 300 rpm = 314.5 rpm at the high end.

Quoting Sparta
tolerance of at least 269-314 rpm
This would mean that tolerance for up to 314 rpm may probably be just enough, so all good. =)

But...
Quoting Sparta
Since the native interleave of this zone is 4 but fetching and transferring a block requires only a little bit more than 3 sectors passing under the RW head, there is plenty of time left to finish checksum verification outside the loop without a performance penalty.
This may be true for 100% CPU available to the loader, but how does it look for most real-world scenarios with a lot less?

Surely some performance penalty should be seen when going down the CPU percentage figures?
2022-05-05 13:30
chatGPZ

Registered: Dec 2001
Posts: 11088
Now make better test programs for measuring flutter already, so we can model this better in VICE :)
2022-05-06 00:42
Sparta

Registered: Feb 2017
Posts: 35
Quoting Krill
This may be true for 100% CPU available to the loader, but how does it look for most real-world scenarios with a lot less?


It is true for real-word scenarios as well. I actually made a new build of Memento Mori with Sparkle 2.1 (including the last disk that streams data while scrolling the bitmaps with the side border open) just to test this.

Quoting Krill
Surely some performance penalty should be seen when going down the CPU percentage figures?


Sparkle 2.1 is as fast as Sparkle 1.5 (previously the fastest Sparkle) on real hardware tests across all tested CPU availability figures.

Half of the checksum calculation is done in the GCR loop in zone 3, and the other half takes a mere 851 cycles outside the loop and this is constant and independent of C64 CPU load. It is also pretty negligible compared to the time required for transferring and decrunching a sector, both of which are inversely proportional to C64 CPU availability, making this even less relevant at higher CPU loads. Also, I am gaining much more with the re-introduction of the second block buffer in the drive.
2022-05-06 10:04
Bitbreaker

Registered: Oct 2002
Posts: 498
That is also what i would expect, if CPU load is high, the floppy is even more idle and missing more sectors anyway, so doing the checksum outside the loop should not slow down things until getting close to the next interleave?
Edit: It also gives the advantage to get the tables smaller with a few extra opcodes spent. The 7th Table then also fits into zp.
2022-05-06 10:29
Krill

Registered: Apr 2002
Posts: 2804
Quoting Bitbreaker
so doing the checksum outside the loop should not slow down things until getting close to the next interleave?
That's what i mean, yes. :)

With 100% CPU, transfer of a block is done somewhere before the next file block rolls by (4 sectors after the current block).
With less than 100% CPU, block transfer takes longer, and at some point the next file block is just missed.
At the same magic CPU percentage, i'd expect the full on-the-fly version not to miss the next file block, as there is ever so slightly more time to transfer the block.

But yeah, the overall impact across all CPU percentages should not matter much, and is probably negligible in most cases.

Anyways, this
		sbc	$1c01		//AAAAABBB	V=0	118/-11	126/-13	136/-13	144/-15	c5-c7 
is a very nice trick to clear the V flag! :) Will attempt to use it for my purposes.
2022-05-06 10:35
Bitbreaker

Registered: Oct 2002
Posts: 498
The sbc trick should also give new chances to fit tables better, as they are mirrored?
2022-05-06 10:38
Krill

Registered: Apr 2002
Posts: 2804
Quoting Bitbreaker
The sbc trick should also give new chances to fit tables better, as they are mirrored?
Maybe, although there was the EOR "trick" before already to have backward-tables.
            lax VIA2_PRA                   ;  40  46  50  52 ;   00000111   ; 0 - %11: [26..51], %10: [28..55], %01: [30..59], %00: [32..63]
            eor #%11111000                 ;  42
            sax .lobyte(decode1 + 1)       ;  45             ;   -----111
            alr #%11111000                 ;  47             ;   -00000--
            tay                            ;  49
2022-05-06 18:00
Sparta

Registered: Feb 2017
Posts: 35
Quoting Bitbreaker
It also gives the advantage to get the tables smaller with a few extra opcodes spent. The 7th Table then also fits into zp.
Exactly. It allowed me to free a whole block by eliminating the huge 8th table and simplify the saver code which otherwise would have overwritten the 8th table with GCR-encoded data. Then the table needed to be restored once saving was complete.

Quoting Krill
Anyways, this
		sbc	$1c01		//AAAAABBB	V=0	118/-11	126/-13	136/-13	144/-15	c5-c7 
is a very nice trick to clear the V flag! :)
Thanks. :) I wish LAX #$07 was a viable option. It would have saved another cycle in the loop.

Quoting Bitbreaker
The sbc trick should also give new chances to fit tables better, as they are mirrored?
In this use case it doesn't. The first table spreads out either way. But yeah, maybe in other situations it may help, similar to the EOR trick.
2022-05-07 23:57
Sparta

Registered: Feb 2017
Posts: 35
Quoting Sparta
Quoting Bitbreaker
The sbc trick should also give new chances to fit tables better, as they are mirrored?
In this use case it doesn't. The first table spreads out either way. But yeah, maybe in other situations it may help, similar to the EOR trick.


I take this last one back. The sbc trick did help find a tight fit of the first table among the others. I somehow confused it with the 4th table when I wrote my original post and looked at my table layout.
Previous - 1 | 2 - Next
RefreshSubscribe to this thread:

You need to be logged in to post in the forum.

Search the forum:
Search   for   in  
All times are CET.
Search CSDb
Advanced
Users Online
t0m3000/ibex-crew
kbs/Pht/Lxt
Airwolf/F4CG
psych
tlr
sachy
Guests online: 321
Top Demos
1 Next Level  (9.8)
2 Mojo  (9.7)
3 Coma Light 13  (9.7)
4 Edge of Disgrace  (9.6)
5 No Bounds  (9.6)
6 Comaland 100%  (9.6)
7 Uncensored  (9.6)
8 The Ghost  (9.6)
9 Wonderland XIV  (9.6)
10 Bromance  (9.6)
Top onefile Demos
1 Party Elk 2  (9.7)
2 Cubic Dream  (9.6)
3 Copper Booze  (9.5)
4 Rainbow Connection  (9.5)
5 TRSAC, Gabber & Pebe..  (9.5)
6 Onscreen 5k  (9.5)
7 Dawnfall V1.1  (9.5)
8 Quadrants  (9.5)
9 Daah, Those Acid Pil..  (9.5)
10 Birth of a Flower  (9.5)
Top Groups
1 Booze Design  (9.3)
2 Nostalgia  (9.3)
3 Oxyron  (9.3)
4 Censor Design  (9.3)
5 Crest  (9.3)
Top Coders
1 Axis  (9.8)
2 Graham  (9.8)
3 Lft  (9.8)
4 Crossbow  (9.8)
5 HCL  (9.8)

Home - Disclaimer
Copyright © No Name 2001-2024
Page generated in: 0.072 sec.