| |
Copyfault
Registered: Dec 2001 Posts: 475 |
Stable Raster via Timer
Maybe some of you advanced coders can help me with the following oddity. I'll keep out the basic routine for stabilizing rasters with the timer method, as it is presumably known to everyone!
If we ignore Illegal Ops for the moment, the max. number of cycles occuring in the main prog is 7 (when executing an indexed RMW). When it comes to the different values the variance can take, there should also be 7 (0 to 6 cycles). I wrote some (working!) routines, but I always end up having 8 different variance values. Of course one can live with it, but I wonder where this 8th state comes from!
If necessary, I'll deliver more details. I'd be really happy to understand this behaviour!
Yours, Copyfault |
|
| |
Graham Account closed
Registered: Dec 2002 Posts: 990 |
you're wrong with 7 cycles max per opcode. illegal RMW instructions with indexed indirect zeropage addressing use 8 cycles.
http://oxyron.net/graham/opcodes02.html |
| |
Copyfault
Registered: Dec 2001 Posts: 475 |
Yes, but the LEGAL Opcodes won't eat more than 7 cycles, will they? I am definitly NOT using any IllegalOps in my maincode, but I do get 8 different values for the variance! On some systems this can easily be verified by the following main prog:
MAIN
INC $adr,X
JMP MAIN
On other systems I had to fiddle around to get a more or less complicated loop, consisting only of legal Ops, that also delivered 8 variance vals. I must admit that I didn't try to use an 8-cycle-Illegal-Op - will there be 9 values for the variance then? |
| |
Graham Account closed
Registered: Dec 2002 Posts: 990 |
i only get 7 different delays on that one. |
| |
Copyfault
Registered: Dec 2001 Posts: 475 |
This "easy" main rout has been tested on a plain C=128 and delivered 8 values - I think Ninja tested it, too, and can confirm this!
If you're interested and like to help me, I could send you the sourcecode of the "complicated loop" (as I named it above) via mail. This should work on most C=64's and give 8 different values for the variance. |
| |
HCL
Registered: Feb 2003 Posts: 727 |
Finally one interesting topic here at CSDB ;). Sorry i cannot contribute with anything intelligent. It seems like it's not 0-6 cykles, but 0-7 cycles you get for LEGAL op-codes. It's kinda strange.. |
| |
Stryyker
Registered: Dec 2001 Posts: 468 |
Has there been a decent bit of theory written about using timers for stable raster interrupts? Or did I miss it in C= Hacking? |
| |
Graham Account closed
Registered: Dec 2002 Posts: 990 |
still, here there's only 7 different delays for a main program using that opcode, tested on a C128DCR.
you are using timers? i hope that you know that there are different CIAs in different machines, and some of them have a delay of 1 cycle on IRQs while others have not. |
| |
Copyfault
Registered: Dec 2001 Posts: 475 |
Quote: Has there been a decent bit of theory written about using timers for stable raster interrupts? Or did I miss it in C= Hacking?
Marko Mäkelä wrote an article for c=hacking, issue 10! Basically it deals with stabilizing rasters on a VIC-20, but I think it quite ok to understand the theory. You can find it on his homepage
http://www.hut.fi/Misc/cbm/vic20-demos.html |
| |
Copyfault
Registered: Dec 2001 Posts: 475 |
@Graham: this means one generally has to take 0-7 cycles of variance into consideration in order to avoid troubles on machines with those Delay-Cia's?
When does such a delay-cycle occur? It can't be constant, because this would only lead to (by one cycle) shifted variance values - but in fact we got 8 different ones. |
| |
Graham Account closed
Registered: Dec 2002 Posts: 990 |
it is a stable delay, so either you have it or you don't. so on one machine you will only get 7 different delays. maybe there's some other delay playing in? i can assure you that with a max 7 cycles opcode you will have max 7 cycles irq delay. |
... 65 posts hidden. Click here to view all posts.... |
Previous - 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 - Next |