| DocumentationRootretour à l'arborescence des catégories » Documentation techniqueEnsemble des informations pouvant être utiles au développement » Lynx docRestranscription de la documentation d'origine » Annexe 2 : Interruptions et mode veille CPU » L'utilisation des interruptions avec Handebug «««« ( /^\ ) »»»» INFOS SUR LA CATEGORIE Créée le : 2009-10-07 10:30:00 Par : vince INFOS SUR LA PAGE Titre : L'utilisation des interruptions avec Handebug Sous Titre : Langue : FRA Source : http://www.monlynx.de/lynx/irq.html#debug Auteur : vince Posté par : vince L'utilisation des interruptions avec HandebugLe moniteur de Handebug (qui est une partie d'Handebug à l'intérieur du 65C02) contrôle les interruptions matérielles et logicielles. Quand un BRK est exécuté, le moniteur démarre à chaud et le lien de communication avec l'Amiga est réétabli. Un BRK peut être exécuté pour deux raisons : soit le développeur a mis une instruction BRK dans son programme, soit Handebug a mis un BRK en guise d'implémentation des points d'arrêts. Le moniteur intercepte aussi bien les interruptions logicielles que matérielles, et bien évidemment, le moniteur n'utilise aucune des interruptions matérielles. A la place, si une interruption matérielle amène le moniteur des vecteurs à pointer sur le gestionnaire pour cette interruption. C'est réalisé par un saut indirect par la table des adresses des routines d'interruption. Le nom de cette table est IntTable et est définie dans le fichier interrupt.i . Les deux premiers octets de cette table vont contenir l'adresse de la routine qui sera lancée quand l'interruption 0 surviendra. Les deux octets suivants contiendront l'adresse de l'interruption 1 etc... Quand Handebug démarre, ces vecteurs sont paramétrer pour pointer vers une routine "sûre". Aussi, chaque fois que la commande GO de Handebug est lancée, les vecteurs sont réinitialisées vers la routine sûre. Un programme qui démarre peut alors paramétrer n'importe lequel de ces vecteurs pour qu'il pointe vers une autre routine, laquelle routine sera alors appelée quand l'interruption se déclenchera. Si le programme exécute un BRK ou rencontre un point d'arrêt et qu'alors le développeur sélectionne la commande CONTINUE de Handebug alors les vecteurs resteront comme paramétrés par le développeur. NOTE : actuellement (31 août 1988) ces vecteurs sont réinitialisés chaque fois que vous sélectionnez la commande CONTINUE de Handebug, parce que GO n'est pas encore implémenté ! Ca veut dire que quand vous poussez le bouton NMI et que vous poussez ensuite le boutin CONTINUE et ensuite espérer que vos routines d'interruptions seront appelées. Vous pouvez faire que vos routines soit appelées en suivant les étapes suivantes : ¤ Sauver l'état du drapeau de désactivation des interruptions ¤ Positionner le drapeau de désactivation des interruptions ¤ Paramétrer l'entrée de l'interruption dans Interrupt avec l'adresse de votre routine ¤ Restaurer le drapeau de désactivation des interruptions ¤ Votre routine doit sauver et restaurer A, X et Y si elle les utilise ¤ Votre routine doit se terminer par un RTS (Source : http://www.monlynx.de/lynx/irq.html#debug) «««« ( /^\ ) »»»» | ||||||||||||||||||||||||
-= DevLynx, un site par vince pour vous =- |