Ah oui peut-être. Bon par contre il y a plein de sources d'interruptions (appui clavier, bouton crayon optique, etc). Donc c'est pas forcément la bonne interruption qui nous intéresse. L'autre truc ennuyeux est que c'est bloquant.
A mon avis il doit être plus simple et plus souple de ne regarder que les interruptions timer. Si j'ai bonne mémoire le registre de controle du timer indique dans son b7 qu'une irq est demandée au CPU. Ce qu'on peut faire à partir de là c'est bloquer les IRQ sur le CPU pour ne plus être interrompu par le moniteur et insérer dans le source a divers d'endroits un code type:
Code:
TST <STATUT_TIMER
BPL *+5
JSR nouvel_echantillon
Du coup si une IRQ est demandée on branche directement vers la génération d'un nouvel échantillon sans se coltiner le traitement par la ROM. Et comme c'est non bloquant on peut poursuivre le reste du traitement (rendu graphique par exemple).
Si on est restreint en place et que JSR est trop gros (3 octets), on peut utiliser un simple SWI ce qui aura l'avantage de pusher tous les registres pour même le même prix. Enfin je dis le même prix mais c'est même un peu mois cher: SWI+RTI = 19+15 = 34 cycles, JSR+PSHS+PULS = 8 + 15 + 17 = 40 cycles
C'est donc une généralisation non bloquante du sync.
(bon je raconte tout ca de mémoire, donc j'ai peut être complètement faux)
[EDIT] ARF je viens de réaliser un truc qui ferait économiser 1 octet!!!
Au lieu de puller tous les regs, ce qui prend 2 octets, on peut s'arranger pour que le CCR ait le bit E à 1 (orcc #128) tout le temps et utiliser un RTI à la place du PULS.