51Close53
FolcoOn the 2009-07-16 at 11:32pm
PpHd (./50) :
What do you mean? Do you want to always display the cursor when there is the auto repeat feature?

Je la fais en français, c'est plus simple :
Le curseur est successivement allumé et éteint. Quand il défile (touche droite ou gauche), j'ai l'impression qu'il continue à respecter son cycle d'allumage/extinction. Ce qui fait qu'il n'est plus très visible, quand il défile et qu'il est en phase de non-affichage. A moind qu'il n'attende l'int 5 suivante pour être dessiné, ça doit être un de ces deux trucs-là qui se passe.

Dans mon éditeur de texte, je réinitialisais la temporisation quand le curseur bougeait, et j'imposais son dessin. Comme ça, il était très visible, même en défilant. Si dans ton cas, ça doit attendre l'int 5 suivante, on ne le verra pas si la répétition de touche intervient avant, ou alors que très peu. En tout cas, c'est ptêt pour ça qu'on le voit mal quand il défile.

Ca, c'est la boucle infinie, qui réinitialisait le curseur juste avant d'attendre un appui :
MainLoop:
	bsr	EnableCursor
	bsr	GetKey					|wait a key
	move.w	%d0,-(%sp)
	bsr	DisableCursor

Et là, on réinitialise les données du curseur en le dessinant systématiquement : on attend pas l'int5, qui normalement s'en charge, on lui dit juste que le curseur est déjà affiché :
|=======================================================
|	EnableCursor
|=======================================================
FunctionSection EnableCursor
	bsr	DrawCursor			|draw the cursor
	lea.l	CursorTimer,%a0
	move.w	#CURSOR_DEFAULT_TIMER,(%a0)	|set the timer
	lea.l	OptionsFlag1,%a0
	bset.b	#CURSOR.Status,(%a0)		|set it to "currently displayed"
	bset.b	#CURSOR.Enabled,(%a0)		|enable the auto-int
	rts					|and quit

Et ça marchait très bien, curseur toujours très visible.