Ce n'est pas forcément une bonne idée de mettre ton code principal dans une interruption (il faut faire attention à bien autoriser les autres interruptions si tu t'en sers, etc...), en général ce qu'on fait c'est plutôt de faire une boucle principale qui *attend* que l'interruption se déclenche une fois le tracé fini. Ca a un certain nb d'avantages, en particulier tu n'es pas limité à des multiples d'1/20è de seconde pour le tps de calcul d'un frame : avec ta méthode, si un frame prend un peu plus de tps que prévu à calculer et que tu débordes un peu sur le tps maximal autorisé, ton frame va être affiché 2x trop lgtps

(et si le tps en question est 1/20è de sec, ça va carrément se voir) Parmi les autres avantages, il y a par exemple le fait que tu vas pouvoir en profiter pour tester tes touches à chaque interruption (et augmenter au passage la fréquence de l'interruption, pour qu'il y en ait par exemple 4 par frame), ce qui va te permettre d'éviter de rater un appui de touche...
On m'a dit aussi qu'il y avait des différences subtiles de comportement sur VTI entre mode superviseur et mode utilisateur (par exemple, il y a un bug qui fait que move.b d0,-(a7) fait prendre à a7 une valeur impaire, ce qui n'arrive pas sur vraie TI ou en mode utilisateur), donc il faut faire aussi gaffe à ça.
Bien sûr si tu prends vraiment toutes les précautions nécessaires, que tu autorises toutes les interruptions une fois passé en mode "calcul du frame" (mais pas avant...) et que tu repasses en mode utilisateur, que tu exécutes le test des touches *avant* de vérifier si une autre interruption est en cours, alors ça sera exactement la même chose -- en un peu plus compliqué
Pour l'AI à utiliser, la 5 est une bonne idée, oui (ça te permet de redéfinir la fréquence, et aussi de zapper facilement les auto-ints 1 et 2 avec OSSetSR).