Salut,
J'aimerai savoir comment stabiliser des niveaux de gris sans utiliser de librairies.
J'ai jetté un oeil a graylib...... j'ai rien compris.
Ca a pourtant pas l'air dur: avant chaque affichage, il faut patienter et attendre une interruption ou quelque chose comme ca.
Mais quelle adresse lire?
What kind of technology is this?
bah, tu utilise les librairies de PreOS pour faire des grays si tu es en mode kernel
ou tigcclib si tu es en nostub
(preOS etant LE kernel a jour... doorsOS est depasse ! et les grays de doorsos clignotent... pas ceux de preos)
Bon je ressuscite un vieux post....
Lorsque j'appelle la fonction GrayOn de preos, la calculette plante.
Est-ce a cause de la desactivation des interruptions que je fais juste avant?
moveq.l #0,d0
move.w #$0700,d0
trap #1
Si oui, y a-t-il un moyen de desactiver toutes les interruptions suceptibles de ralentir un programme sans preparer le crash de la calculette?
Merci
What kind of technology is this?
les grays se basent sur l'AUTO_INT_1.
il ne faut donc pas le désactiver
(a la limite, avant d'activer, le rediriger vers un Handler qui ne fait rien, plutot que celui par defaut du TIOS)
Uther Le 08/06/2003 à 16:08 si tu veux les niveaux de gris tu ne devras pas toucher a l'AI1 et il est déconseillé de désactiver l'AI3 aussi car cela stoppera l'horloge sur une HW2 ROM 2.06 ou plus
Uther Le 08/06/2003 à 16:10Edité par Boo le 08/06/2003 à 16:17 en effet met un rts dans l'AI1 si tu veut gagner de la vitesse mais tu ne dois pas la désactiver
Au fait, je programme 100% assembleur (plus pour trop longtemps) avec os.h.
Comment desactiver toutes les interruptions sauf la 1 et 3? (en assembleur - en C, ca doit etre desactivate(all_interruption sauf the 1 and the 3) ... je plaisaaaannnnte ;-)
What kind of technology is this?
C'est quoi la difference entre rts et rte?
What kind of technology is this?
Pourtant quand je ne cherche pas a stabiliser les gris, mon programme desactive toutes les interruptions et ne plante pas pour autant.
Je veux juste desactiver un maximum d'interruption et pouvoir quand meme utiliser la synchronisation des gris de PreOs.
Sinon, ca m'etonnerait que mes programmes plantent donc l'interruption 6 ......
What kind of technology is this?
Uther Le 08/06/2003 à 16:36 de toute facon l'AI6 n'est décleché que par l'appui sur ON donc même si tu la détourne le gain sera nul.
Tout ca n'explique pas du tout comment desactiver les interruptions qui ne servent a rien.
What kind of technology is this?
Si je ne desactive rien, tout rame.
What kind of technology is this?
Bas c'est simple dans ta fonction main tu fait:
void main (void)
{
OldInt1 = GetIntVec (AUTO_INT_1);
SetIntVec (AUTO_INT_1, DUMMY_HANDLER);
.... ton code
SetIntVec (AUTO_INT_1, OldInt1);
}
Pour l'interruption n°4 il faut éteindre le bit n°3 du port 600005
Merci geogeo mais je fais de l'assembleur.
What kind of technology is this?
lol
Je suis allé trop vite donc pour rediriger une interruption procéde comme ça:
move.l #empty_handler,interrupt_handler
;Active l'interruption n°5
movem.l d0,-(a7) ;Sauvegarde de d0
move.w #$0700,d0 ;Désactive toutes les interruptions
trap #1 ;Effectué par trap #1
move.l $74,old_int5 ;Sauvegarde de l'ancien adresse de int5
bclr.b #2,($600001) ;Désactive la protection d'écriture dans la table vectorielle
move.l #int5_handler,$74 ;Met l'adresse dans la table vectorielle
bset.b #2,($600001) ;Active la protection en écriture de la table vectorielle
move.w #0,d0 ;Met 0 dans d0
trap #1 ;Exécute interruptions (rétablit interruptions)
movem.l (a7)+,d0 ;Charge de d0
rts
Adresses des ints:
1=$64
2=$68
3=$6c
4=$70
5=$74
6=$78
7=$7c
En quelque sorte ses adresse possède une adresse du programme qui s'execute lorsque une interruption ce déclenche.
int_handler:
rte
Uther Le 08/06/2003 à 18:19 tu mets juste l'instruction "rte" dans les interruptions que tu veux désactiver.
Merci, je vais analyser tout ca.
What kind of technology is this?
geogeo> évite les movem si tu n'empiles/dépiles qu'un seul registre (il me semble qu' A68k optimise ça de lui même, mais quand même...)
Je sais d'ailleurs pas pourquoi je l'ai mis ici puisque qu'il y a une donnée à empiler, je l'utiliser pour plus de 3 donnée à empiler.
J'ai déjà vu un autre bout de code où tu utilisais movem pour un seul registre. (mais c'était peut-être le même en fait).
KK: ca vaut quoi #int5_handler ? (je programme avec os.h)
What kind of technology is this?
C'est une référence vers une étiquette