User Tools

Site Tools


base:efficient_tod_initialisation

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
base:efficient_tod_initialisation [2019-05-17 12:58]
silverdr [Dual purpose]
base:efficient_tod_initialisation [2020-01-31 17:49]
silverdr [Proper solution]
Line 45: Line 45:
 which correspond to the four possible C64 hardware setup combinations. Comparing to $51, which falls more or less in the middle, gives us the expected answer. If the HI byte of the timer has value higher than $51 we have 60Hz supplied to the TOD pin. If OTOH it has lower value, we have 50Hz supplied. which correspond to the four possible C64 hardware setup combinations. Comparing to $51, which falls more or less in the middle, gives us the expected answer. If the HI byte of the timer has value higher than $51 we have 60Hz supplied to the TOD pin. If OTOH it has lower value, we have 50Hz supplied.
  
-Please also note that we use CIA #2 and not CIA #1. CIA #2 is chosen because ​changing ​the timer values there does not affect regular IRQ timings. MoreoverKERNAL ​re-initialises those timers whenever it wants to use them. This saves as a few bytes, which would otherwise be needed to save and restore timer registers' ​original ​values. Last and least we do not disable NMIs as it is assumed that checking/​setting the params will be done as part of application initialisation,​ before ​setting up IRQ/NMI handlers.+Advantages:​ 
 +  * Does not break on Super-CPU and similar 
 +  * No screen side-effects 
 +  * Short and fast 
 + 
 +Please also note that we use CIA #2 and not CIA #1. CIA #2 is chosen because ​it timers are by default not used by the system. Moreover KERNAL initialises those timers ​according to its needs, ​whenever it wants to use them. This saves us a few bytes, which would otherwise be needed to preserve ​original ​settings. Last and least we do not disable NMIs as it is assumed that checking/​setting the params will be done as part of application initialisation,​ before ​any IRQ/NMI handlers ​are set.
 ===== Dual purpose ===== ===== Dual purpose =====
 I mentioned before that this routine can serve also another purpose and give us potentially even more savings. Yes, with addition of only a few bytes: I mentioned before that this routine can serve also another purpose and give us potentially even more savings. Yes, with addition of only a few bytes:
base/efficient_tod_initialisation.txt · Last modified: 2020-01-31 17:49 by silverdr