calcul de fréquence du processeur 680X0 ?
11 sujets de 1 à 11 (sur un total de 11)
-
Je cherche un petit bout de source en ASM me permettant de calculer la vitesse du processeur.. avec lequel je trouverai 7 Mhz pour un A500 et 14 mhz pour un A1200, ou quelques chose de semblable…
une sorte de boucle faisant appelle au clock-time qui me donnera un chiffre proportionnel a la vitesse !!
ou
Une library système interne le fait-elle (style EXEC), car je n’ai pas trouvé de doc sur ce sujet..!!!
Merci les potos…
Amos un jour, Amos Toujours
-----------------------------------
AmOS4 - Library Amos sous C (Os3-Os4)Oui je cherche ca pour étalonner une library graphique car sous A500 ca tourne normalement et sous 68060 c’est déjà plus rapide (trop peu être) et Winuae.. le temps est tellement etendu que l’effet arrive à la fin avant que l’on puisse voir quelque chose !!!
NDBatteMan : Évitez les doubles posts. Pour cela, utilisez le bouton « éditer ».
Amos un jour, Amos Toujours
-----------------------------------
AmOS4 - Library Amos sous C (Os3-Os4)Tu ne peux pas synchroniser ça avec la vbl plutôt ?
PowerMac - G5 2.0 GHz - 1.7 Go RAM - Radeon 9600P 128 Mo - MorphOs 3.13 et Peg2 - G4 RIP
Mac mini - G4 1.42 GHz - 1 Go RAM - Radeon 9200 32 Mo - MorphOs 3.9
WinUAE sur HP Core2 Quad 8200
Epave de Mist FPGA remplacé par un Sidi
A1200 malade 😉 et A500 512+512Ko RAM Kickstart 1.3Tu peux toujours regarder dans le code source de whichamiga
d’harry Sintonen
http://aminet.net/package/util/moni/WhichAmiga
il détermine la fréquence mais il met 3 secondes en coupant tous les DMA…
En pal, tu as 50 rafraichissements par seconde, donc si tu synchronises un évènement, quel qu’il soit, avec l’affichage, il tournera à la même vitesse, peu importe la puissance CPU (à condition qu’elle soit suffisante).
Maintenant, certains programmeurs confirmés qui « hantent » ce forum, auront peut-être une meilleure idée pour « timer » tes programmes.
PowerMac - G5 2.0 GHz - 1.7 Go RAM - Radeon 9600P 128 Mo - MorphOs 3.13 et Peg2 - G4 RIP
Mac mini - G4 1.42 GHz - 1 Go RAM - Radeon 9200 32 Mo - MorphOs 3.9
WinUAE sur HP Core2 Quad 8200
Epave de Mist FPGA remplacé par un Sidi
A1200 malade 😉 et A500 512+512Ko RAM Kickstart 1.3La synchro la plus stable sur Amiga c’est le vbl.
modifies le source du wait_vbl() ici :
https://www.amigaimpact.org/modules/newbb/viewtopic.php?viewmode=flat&topic_id=2212&forum=2
tu rajoutes un compteur pour compter les cycles en 1 balayage et tu peux en déduire la vitesse du proc en fonction de la valeur du compteur :
en langage E (avec de l’assembleur)
PROC main()
DEF dx : REG
MOVE.L #0,dx
wait1:
CMP.B #$80,$DFF006
BNE.S wait1
wait2:
ADD.L #1,dx
CMP.B #$90,$DFF006
BNE.S wait2
WriteF(‘Resultat :dn’,dx)
ENDPROC
Chez moi le résultat est variable, mais 9 fois sur 10 j’obtiens :
602 sur mon 1200 nu
904 sur mon 1200 avec la carte accélératrice Blizzard IV
307 sur UAE ouvert avec un Workbench PAL
de 3900 à 5200 sur un Workbench en UAEGFX.
Je ne sais pas si ces registres ont vraiment du sens sur un UAEGfx…
Merci beaucoup.. je vais travailler dans ce sens… avec le registre $DFF006 dans un premier temps!!!!
comme suit :
VBL:
tst.b $dff006
bne.s vbl
cela figera l’affichage en trame de balayage !!!
c’est déjà très bien !!!
Amos un jour, Amos Toujours
-----------------------------------
AmOS4 - Library Amos sous C (Os3-Os4)Attention, $dff006 contient le poids faible de la position du faisseau de balayage de l’écran.
Le poids fort est dans $dff005, donc si tu as un écran qui fait plus de 255 lignes (et je crois que c’est forcément le cas puisque ce n’est pas une coordonnée pixel), $dff006 passe 2 fois à 0 sur la même image : Une fois en début de balayage ($dff005 vaut 0), et une fois sur la fin ( $dff005 vaut 1 à ce moment. Cest un octet, ne teste pas le mot ou un double, le .b est indispensable)
Bon code !
Sur le vrai A1200, ca ne pose pas de problème :
Voici la procédure remaniée et son exécution :
PROC main()
DEF dcpt : REG ,pos : REG,i, tab_res[16] : ARRAY OF LONG
Forbid()
MOVE.L #0,dcpt
FOR i := 0 TO 15
pos := i* $10
wait:
ADD.L #1,dcpt
CMP.B $DFF006,pos
BNE.S wait
tab_res := dcpt
ENDFOR
WriteF(‘Résultat : ‘)
FOR i := 1 TO 15
WriteF(‘d : dn ‘,tab_res,tab_res-tab_res[i-1])
ENDFOR
Permit()
ENDPROC
Résultat : 9844 : 902
10746 : 902
11649 : 903
15506 : 3857
16407 : 901
17310 : 903
18213 : 903
19116 : 903
20019 : 903
20922 : 903
21825 : 903
22728 : 903
23631 : 903
24534 : 903
25437 : 903
De toutes façon, si tu veux une belle animation sur Amiga, il faut la synchroniser avec le vbl et utiliser un double buffer. (image visible et image invisible à permuter à chaque balayage)
11 sujets de 1 à 11 (sur un total de 11)
- Vous devez être connecté pour répondre à ce sujet.
› Forums › AmigaOS, MorphOS et AROS › Développement › calcul de fréquence du processeur 680X0 ?