ZuperIndex
SOMMAIRE
Où manger
SUIVANTE
Interruptions d'anomalies Fonction TI-92 Introduction
Fonction TI-92 Pourquoi de telles interruptions ?
Fonction TI-92 Vecteurs en RAM
Fonction TI-92 Comment marchent-elles ? Barre

Page précédente

Monter Descendre Retour Introduction

puce Les interruptions d'anomalies sont des interruptions déclenchées lorsqu'une anomalie a effectivement été détectée par le processeur.

puce Ces dernières (au nombre de dix) tiennent plus des interruptions logiciels que des interruptions matérielles, dans le sens où elles interrompent vraiment le cours du programme en cours, d'une façon totalement incontrôlable et triviale.

Impossible de les désactiver étant donné que c'est le processeur lui-même qui va les déclencher, dès qu'il arrive à détecter une erreur fatale à son fonctionnement.


Barre



Monter Descendre Retour Pourquoi de telles interruptions ?

puce Simplement pour avertir (c'est déjà pas mal…) voire traiter (… c'est encore mieux mais non présent dans le TIOS) ces anomalies fatales, il est en effet très désagréable de planter sa machine sans même en connaître la cause, le 68000 détecte désormais celles-ci :

Message d'erreurExplication associée
BUS ERRORaucun périphérique ne répond à l'adresse auquel le processeur essaie d'accéder
ADDRESS ERRORl'adresse d'une instruction (au moins un mot) ou l'accès à un mot ou double mot s'est effectuée à une adresse impaire
ILLEGAL INSTRUCTIONle code binaire donné au processeur ne correspond à aucune instruction du Motorola 68000
ZERO DIVIDEla division par zéro est impossible (résultat infini)
CHK INSTRUCTIONla vérification de limites provoquée par l'instruction CHK a échouée
TRAPV INSTRUCTIONle test de débordement provoqué par l'instruction TRAPV a échoué
PRIVILEGE VIOLATIONune instruction réservée au mode Superviseur a essayé d'être exécutée en mode Utilisateur
TRACE VECTORsi le mode TRACE est activé (bit 15 du registre de status SR) après l'exécution d'une instruction, le processeur exécute le programme pointé par ce vecteur, ceci permet la mise en place d'un débuguer
EMULATION 1010aucune informations pour le moment
EMULATION 1111aucune informations pour le moment


Barre



Monter Descendre Retour Vecteurs en RAM

puce Il y autant de routines différentes à exécuter et surtout à identifier en mémoire que d'auto-int,
ceci est réalisé par une liste de sept pointeurs (appelés vecteurs pour les interruptions) contenue de l'adresse $000064 à l'adresse $00007C (un pointeur est une adresse donc est de type double mot soit 4 octets) :

$000060 ... $000064 vecteur de l'auto-int 1
$000068 vecteur de l'auto-int 2 $00006C vecteur de l'auto-int 3
$000070 vecteur de l'auto-int 4 $000074 vecteur de l'auto-int 5
$000078 vecteur de l'auto-int 6 $00007C vecteur de l'auto-int 7

puce Ces routines que nous pouvons littéralement définir comme des sous-programmes (mais spéciaux comme vous le verrez un peu plus loin), sont chargés d'effectuer des tâches bien précises, en prenant en compte (comme c'est parfois le cas) des informations retournées par d'autres interruptions automatiques, c'est par exemple le cas pour l'auto-int 1 qui va prendre en compte l'auto-int 2 (clavier).

puce Qui dit pointeurs dans la RAM dit… pointeur modifiable et c'est effectivement le cas !
Il devient alors possible de détourner ces interruptions mais dans des conditions restreintes.

Il faudra tout de même désactiver la protection de la mémoire en désarmant le bit 2 à l'adresse $600001, en effet toute écriture dans la mémoire inférieure à l'adresse $000120 n'est autorisée que sous cette condition, n'oubliez pas de réactiver la protection de la mémoire après avoir fini (la réciproque étant l'armement du bit 1 à m'adresse $600001).

puce Notez que ces vecteurs étaient tous prévus pour pointer des routines en ROM, Fargo modifie touefois quelques-uns de ces vecteurs (auto-int 1 et auto-int 6) pour fonctionner.

puce Voici une capture d'écran du logiciel Hexview 2.5 de Benoît Scherrer, celle-ci montre les vecteurs des interruptions d'anomalies de la TI-92II (les vecteurs sont différents selon les TI) :

puce

Barre



Monter Descendre Retour Comment marchent-elles ?

puce Et bien considérons qu'aucune interruption n'est masquée et intéressons-nous à l'auto-int 2,déclenchée quand une touche différente de [ON] est appuyée.

puce Le microprocesseur prend connaissance de la demande faites de la part du périphérique lié à l'auto-int 2 (le clavier sur les TI-92), fini l'exécution de l'instruction courante et va déposer successivement sur la pile le registre de pointeur d'instruction PC (pour revenir au programme que nous allons quitter) puis le registre de statut SR, soit 4 puis 2 octets.

L'exécution se poursuit à l'adresse elle-même contenue à l'adresse associée à l'auto-int 2 soit $000068.

La routine exécute alors la tâche qui lui incombe et va se terminer non pas par l'instruction RTS (qui restaure seulement PC) mais par l'instruction RTE (ReTurn from Exception) qui va, elle, restaurer PC et SR.

puce Le programme interrompu par l'auto-int poursuit son exécution comme si de rien n'était.


Barre



 

 

Lisez la section sur les droits d'auteur et la licence d'utilisation avant de distribuer Zguide.

Zguide © 1998 - 1999 par Florian DREVET. Tous droits réservés