Kirjoittaja |
Viesti |
JPQ
| Torstaina, 2. maaliskuuta, 2006 - klo 22.49: | | Miten lyhyitä viiveitä ? myös classic amigalla toimiva tapa kiinnostaa nyt ei riitä Delayn 1/50sekunnin tarkkuus. Ja toiseksi miten voisin tehdä ikkunan joka korvaisi MS-DOSin tekstitilaa. Oma softa tekstitila on kyllä mielessä mutta sen api olisi aika karu ja muutenkin eli onnistuisiko CON/RAW ikkunalla jonka avaan halutulla kirjasinlajilla ?
|
JPQ
| Torstaina, 2. maaliskuuta, 2006 - klo 22.53: | | Ihanne tarkkuus viiveelle voisi olla jopa 1ms. PS. classic amigan amigaoseista tarkoitan siis os3.9 jota vanhempien kanssa toimivuus on toki plussaa. Eikä se saattaa tietenkään tappaa moniajoa tai hidastaakkaan kait sitä pahemmin.
|
Jarmo Piippo
| Perjantaina, 3. maaliskuuta, 2006 - klo 8.37: | | JPQ: classisillahan noita tehdään CIA-B-piirin ajastimilla, jotka pyörivät yli 700 kHz:n tarkkuudella. Moniajoa niiden lueskelu ei hidasta, jos laittaa ne ilmoittamaan laskurin täyttymisestä keskeytyksillä, ja varaa resurssit käyttöönsä ennen niiden osoittelua. Esimerkkiohjelmia löytynee Aminetistä ym. Pegasoksessa ei ehkä noin tehty classic-ohjelma toimi, tai ainakaan samalla tarkkuudella (liekö kukaan testannut?).
|
Jon
| Perjantaina, 3. maaliskuuta, 2006 - klo 9.09: | | Käytä timer.deviceä. CIA-tuki löytyy käsittääkseni vain Amithlonista ja UAE:sta. Joissakin C-kirjastoissa tulee usleep(mikrosekunnit) ja toki myös SDL_Delay(millisekunnit):tä voi käyttää mutta loppupeleissä timer.device hoitaa hommat kotiin.
|
Jarmo Piippo
| Perjantaina, 3. maaliskuuta, 2006 - klo 10.03: | | Jon: eli CIA:ta käyttävät ohjelmat eivät toimi A1:ssä tai Pegasoksessa? Harmi. Mutta tosiaan timer.devicen tarkkuuskin riittänee tuohon JPQ:n millisekunnin vaatimukseen, täyden reson CIA:sta kuitenkin saa irti vain "laittomin" keinoin iskemällä hardista. :-)
|
Jon
| Perjantaina, 3. maaliskuuta, 2006 - klo 10.47: | | Jarmo Piippo: käsittääkseni näin. Muuten suurin osa tracker/player-ohjelmista toimisi ja näin ei ole ainakaan A1:llä. Miksei muuten alkuperäinen timer.device käyttänyt CIA:ta, vai käyttikö?
|
itix
| Perjantaina, 3. maaliskuuta, 2006 - klo 13.31: | | Pegasoksella voi käyttää UNIT_CPUCLOCK timeriä jolla on parempi tarkkuus kuin CIA-ajastimilla. Mut UNIT_MICROHZ on yleensä ihan riittävä. Jos on laiska eikä jaksa avata timeriä voi käyttää TimeDelay() funktiota, löytyy amiga.lib/abox.a kirjastosta.
|
JPQ
| Perjantaina, 3. maaliskuuta, 2006 - klo 13.46: | | itix: täytyykin kattella mutta missä on abox.aan dokumentit. PS. en ole laiska mutta tämän käyttö vois olla selkeintä.
|
JPQ
| Perjantaina, 3. maaliskuuta, 2006 - klo 13.52: | | itix: abox.a varmaan menee mukaan arvaanko oikein sillain kuin PowerSDLän ne palat. Ja onko dokut samat kuin amiga.libissä jollei tosiaan missä on ? amiga.libin ohjeet lieneekin tiedossa missä on.
|
itix
| Perjantaina, 3. maaliskuuta, 2006 - klo 21.34: | | abox.a on MorphOS:n amiga.lib, dokit on AOS SDK:ssa.
|
JPQ
| Perjantaina, 3. maaliskuuta, 2006 - klo 23.13: | | itix: eli eroja ei ole ?
|
itix
| Lauantaina, 4. maaliskuuta, 2006 - klo 12.27: | | Eroja ei ole.
|
Jarmo Piippo
| Maanantaina, 6. maaliskuuta, 2006 - klo 11.01: | | itix: Mielenkiintoista! Kuinka hyvään tarkkuuteen noilla Pegasoksessa käytännössä pääsee (todellinen mittaustarkkuus)? Ja löytyykö kovosta sellaista ohjelmoitavaa laskuria, joka vastaisi suunnilleenkaan CIA:ta? Noin tarkka koneen ulkopuolisten tapahtumien mittaus tarjoaisi mahdollisuuksia vaikka mihin.
|
Piru
| Maanantaina, 6. maaliskuuta, 2006 - klo 13.53: | | @Jarmo Piippo "Kuinka hyvään tarkkuuteen noilla Pegasoksessa käytännössä pääsee (todellinen mittaustarkkuus)?" MorphOS:ssa tarkkuus ei ole paras mahdollinen johtuen käyttöjärjestelmästä johtuvista latensseista. Tämähän pätee lähes aina: Jos pyydetään viivettä, todellisuudessa aikaa kuluu hieman enemmän kuin pyydetty. Raudasta: UNIT_CPUCLOCK käyttää nimenomaan PPC prosessorin sisäistä laskuria (timebase). Yleensä se pyörii neljäsosalla väyläkellosta. Esimerkiksi Peg2:ssa se on 133.333MHz.../4 eli 33.333...MHz. Tuon kanssa voi sitten pyytää keskeytyksiä ym. Käytännössä kaikki ajastus on toteutettu timebase:lla.
|
Piru
| Maanantaina, 6. maaliskuuta, 2006 - klo 14.24: | | Jos kuitenkin kyseessä on mittaus (tapahtuman A ja B välinen aika) niin tuo timebase juoksee tasaisella nopeudella kokoajan. Jos suorittaa kalibroinnin jossa tyhjän tapahtuman mittausviive poistetaan, saadaan hyvinkin tarkkoja tuloksia.
|
Jarmo Piippo
| Tiistaina, 7. maaliskuuta, 2006 - klo 8.57: | | Piru: Hyvältä kuulostaa. Kuinkas leveä rekisteri tuo timebase on, eli mikä on pisin aika ennen sen pyörähtämistä ympäri? MorphOS:n kanssa ei liene mahdollista/helppoa sammuttaa moniajoa ja lukea rautaa suoraan, kuten classiceissa?
|
Piru
| Tiistaina, 7. maaliskuuta, 2006 - klo 9.44: | | @Jarmo Piippo "Kuinkas leveä rekisteri tuo timebase on, eli mikä on pisin aika ennen sen pyörähtämistä ympäri?" Timebase rekisteri on 64-bittinen, joten 2**64-1 / timebase_freq sekuntia. "MorphOS:n kanssa ei liene mahdollista/helppoa sammuttaa moniajoa ja lukea rautaa suoraan, kuten classiceissa?" Tuon rekisterin lukeminen onnistuu myös suoraan pienellä koodinpätkällä (inline asm), joten tässä ei ole mitään ongelmaa. Tämä siksi että rekisteri on osa normaalia prosessorin user-puolen ominaisuutta.
|
Jarmo Piippo
| Tiistaina, 7. maaliskuuta, 2006 - klo 10.05: | | Piru: No eipä tule sitten ihan heti raja vastaan, voi ajastaa näköjään tuhansia vuosia. :-) Löytyyköhän PPC-pohjaisista koneista muitakin kivoja bonus-yllätyksiä päivitystä harkitsevan Classic-harrastajan näkökulmasta...
|