Valszeg kevesen emlékeznek rá, de amikor a Javascript bevezette a setTimeout() függvényt, akkor egy bizonyos okból az nem tudott gyorsabban ütemezni, mint 55msec.
De miért 55msec?
Azért, mert azoknak a számítógépeknek az időzítője másodpercenként 18.2-t ütött, innen pedig 1000msec / 18.2 = 54.95-ös érték.
De miért 18.2?
Az érték úgy jön ki, hogy a PC-kben használt "órát" (PIT - Programmable Interval Timer) akkoriban egy Intel 8254 chip szolgáltatta. Amikor ez az "óra" ketyegett egyet, megnövelt egy számértéket eggyel. Ez a számérték maximum 65536 (2^16 - azaz két byte) értéket vehetett fel. Mindig, amikor átfordult, az "óra" "ütött" egyet. Az óra frekvenciája 1.19318 Mhz volt, ezt elosztjuk 65536-tal, akkor kijön a 18.2-es érték.
De miért pont 1.19318 Mhz?
Ez a frekvencia pont harmada az NTSC colorburst (szín szinkron jel) frekvenciának (3.57954 MHz). Ez a frekvencia arra való, hogy színinformációt adjon az amúgy fekete-fehér képhez. Úgy találták, hogy ez a 3.57954 MHz elegendő távolságban van a fényességinformációtól és a hangsávtól, így egyikkel sem fog interferálni (azaz, pl. nem sistereg a hang vagy nem zizisedik a kép).
De továbbra is, miért 3.57954 MHz?
Nos, ez úgy jön ki, hogy összeszorzunk néhány mágikus számot! Ezek pedig sorban:
- az NTSC szabvány által meghatározott vízszintes vonalak száma a képernyőn, azaz a függőleges felbontás: 525 "scan line". A folyamatosság fenntartása miatt viszont csak minden második sort rajzolta a tévé egy körben (interlace), így ezt az 525-öt el kell felezni: 262.5
- a váltakozó áram frekvenciája: 60 Hz (ebből lett a képfrissítési frekvencia)
5 * 7 * 13 / 2
Így együtt kiadják az eredményt, 262.5 * 60 * 5 * 7 * 13 / 2
= 3.583.125 (elegendően közel van a fent említetthez). Ha nagyon pontosak akarunk lenni, akkor a váltóáram frekvenciájának használt értéket le kell csökkenteni egész pontosan 59.94-re.
(Egyébként, ha ez utóbbi a frekvenciát megfelezzük, akkor 29.97-et kapunk, és a régi motorosoknak már egyből PTSD-je lesz a videókódolás macerája miatt - na így függ össze ez az egész.)
Most akkor már megint mi ez a
5 * 7 * 13 / 2
?
Mert ez olcsó volt! Ezeket a számokat olyan oszcillátorokkal állították elő, amik gyártása nagy tömegben és olcsón történt, ezért felhasználták a tévékben már meglévő eszközöket, hogy ilyen szorzatokat állítsanak elő.
Szóval az, hogy 2002-ben miért nem lehetett sűrűbben ütemezni az animációkat azért volt korlátozva, mert valaki 1938-ban kitalálta, hogy hogyan lehet színes tévét csinálni.