C64 Timerien käyttö

Saku-foorumi » Vapaa sana » Viestit 2005 » Viestit 06/2005 » C64 Timerien käyttö « Edellinen Seuraava »

Kirjoittaja Viesti
 

JPQ
Perjantaina, 17. kesäkuuta, 2005 - klo 23.07:   
voisiko joku selittää meneekö tuo timer homma noin näin:
pysäytän timerin, laitan arvoiksi nollat ja käynnistän timerin
ja halutun ajan kuluttua pysäytän timerin ? haluttu aika olisi se kun
nopeus testini on suoritettu tässä esimerkissä. Eli toimiiko tämä kuin
perinteinen sekuntti kello urhelu kisoissa.
ja palauttaako timer normaaleja numeroita vaiko BCD koodattuja jos
jälkimäisiä mistä mahdollisimamn tarkka kello ?
Nimerkki Ajattelin tehdä nopeus testin jolla voin jopa C64 suhteuttaa muihin laitteisiin.

 

Jani Kuituniemi
Lauantaina, 18. kesäkuuta, 2005 - klo 0.42:   
Käytä CIA:n Jiffy kelloa ($00a0-$00a2). Sen arvo kasvaa joka 1/60s osa sekunti kunnes pysäytät. Toimii juuri noin kuin sanot. Eli tuo on binääri-laskuri, $00a2 pyörii 0-255 ja kasvattaa $00a1:sta joka pyörii 0-255 ja kasvattaa edelleen $00a0:aa. Tuosta voi sitten laskea kuluneet sekunnit jakamalla tuon luvun 60:llä ja jakojäännöksestä 1/60:s osa sekunnit.

 

allu
Lauantaina, 18. kesäkuuta, 2005 - klo 1.47:   
Jiffy-kello on vaan kovin epätarkka. Eikä sen resoluutiokaan riitä kuin pitempiin mittauksiin. Esim. suurinta osaa pelirutiineista sillä ei voi kellottaa koska ne vie alle 1/50 sekuntia. Sitäpaitsi, ei oikeastaan voi sanoa että se on CIA:n kello vaikka se CIA:n timerilla onkin toteutettu. Lähinnä se on c64:sen "käyttiksen" palvelu. Jos välttämättä haluaa käyttää jiffy-kelloa sen arvo on myös TI-muuttujassa.

JPQ: CIA:n timeri laskee alaspäin. Sinne asetetaan haluttu viive mikrosekunteina(max. 65535us) ja käynnistetään timeri. Kun laskuri pyörähtää nollan kautta ympäri asettuu keskeytysbitti. Sinun tapauksessasi olisi parempi laittaa toi max-arvo sinne, käynnistää timeri ja pysäyttää kun kellotettava rutiini on valmis(rutiini ei saa kestää kauempaa kuin 65ms). Sopivasti laskemalla saadaan rutiinin viemä aika mikrosekunnin tarkkuudella. Laskurien arvot ovat ihan normaalia binääriä ainoastaan TOD-kello käyttää BCD-esitystä(mikä onkin järkevää).

CIA-piirin datasheettejä on muuten netti pullollaan. Omillakin sivuilla on yksi.

 

JPQ
Sunnuntaina, 19. kesäkuuta, 2005 - klo 18.54:   
allu: tuo Jiffy riittää mulle eli en testaa rutiinien nopeutta vaan koneen.
PS: riittää tälläiseen nopeus testiin mainiosti tähän menee aika piankin ehkä jopa minuutteja. ja Pegasos2sessakin saanen tarkkuudeksi vain sadasosa sekunnin joten...
ja en koodaa basicilla joten TI muuttujaan en pääse käsiksi. Ja missäs sun omat sivut on ? ja tuo laskuri ei riitä mulle aika määrien suhteen johon se pystyy tarkkuushan toki olisi kivaa mutta
kuitenkin verrokkikaan ei ääritarkka ole joten...

 

allu
Sunnuntaina, 19. kesäkuuta, 2005 - klo 19.25:   
JPQ: hmm, et testaa rutiinien nopeutta vaan koneen?? Koneella tarkoitat c64:sta? Kuusnelonen on aina yhtä nopea(/hidas) eikä ole olemassa muutaman turbokortin lisäksi nopeampaa c64 rautaa. Jos yrität mitata emulaattorin nopeutta niin se ei onnistu millään kuusnelosessa laskevalla ohjelmalla. Syy siihen on että vaikka laittaisit emulaattorin pyöriin täysillä, niin emuloitava kuusnelonen ei sitä huomaa vaan antaa aina saman tuloksen. Tuloksia vaan tulee enemmän tarkasteluvälillä. Voit ajatella sen niin että vaikka c64:n prosessori nopeutuu emulaattorin nopeutta nostamalla niin myös c64:n "chipset" nopeutuu samassa suhteessa joten jiffy-kellokin käy nopeammin.

Ne (mun) datasheetit on tuolla http://www.surffi.net/~allu/datasheets/

 

JPQ
Sunnuntaina, 19. kesäkuuta, 2005 - klo 19.57:   
allu: no C64 on joo yhtä nopea mutta maailmassa kuten tiedät hieman
muitakin koneita.

 

allu
Sunnuntaina, 19. kesäkuuta, 2005 - klo 20.18:   
JPQ: Ahaa, eli mittaat emulaattorin nopeutta. Eikös sen mittaukseen käy ihan tavallinen 10000 looppi koska joka tapauksessa joudut kellottaan sen sekunttikellolla. Sen suoritusaika on suoraan riippuvainen emulaattorin isäntäkoneen suorituskyvystä. Kun taas TI-muuttuja antaa aina saman arvon. Oli emulaattori sitten säädetty 10% tai 1010% nopeudelle.

 

JPQ
Sunnuntaina, 19. kesäkuuta, 2005 - klo 21.32:   
allu: väärin enkä vaan eri vertaan koneiden nopeuksia. Ja teen todella extreme nopeus vertailuja jossa sanoisit heti jos kuulisit ei ole järkeä. Tiedän kyllä että kaksi/kolme muuta testilaitetta ovat nopeampia mutta paljonko. Tiedän että tuloksia ei kestä herkimmät muutenkaan.

 

Britelite
Maanantaina, 20. kesäkuuta, 2005 - klo 14.01:   
Sanoisin että normaali seinäkello riittää ihan hyvin ajanottoon jos jotain vähänkin monimutkaisempaa testiä olet nepalla suorittamassa :)

 

JPQ
Maanantaina, 20. kesäkuuta, 2005 - klo 14.13:   
Britelite: eikä muuten riitä sen tarkkuus mulle ja se on riitettävä
sulle. Eli testaan mahdollisimman tarkasti en halua että Commodore64
saa huonommat tulokset kuin ansaitsee.

Lisää viestisi tähän
Viestisi:
Käyttäjätunnus: Postitus informaatiota:
Tämä on yksityinen keskustelupalsta. Vain rekisteröidyt käyttäjät ja moderaattorit voivat postittaa tänne.
Salasana:
valinnat: Aktivoi URL:t automaattisesti tässä viestissä
Toimenpide: