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.