★ CODING ★ LA BIBLE DU CPC 6128 ★ |
La bible du CPC 6128 : 1.01.2 Extension d'instructions à travers RST |
Etant donné ce mode de gestion de la mémoire, on peut cependant se demander comment peut se faire l'accès aux ROMs ou aux RAMs situées dans les même zones. Pour éviter aux utilisateurs le travail de programmation assez considérable que nécessiteraient normalement ces tâches, les programmeurs du système d'exploitation ont eu une riche idée. Grâce à des programmes spéciaux et à une utilisation habile des instructions RESTART du Z80, ils ont pratiquement abouti à faire des restarts RST1 à RST5 une extension du jeu d'instructions du Z80. Ces RSTs peuvent être employés comme des JPs ou des CALLs ordinaires. Certains RSTs réclament toutefois une adresse sur 3 octets. Le troisième octet, supplémentaire, détermine dans quelle ROM le JP ou le CALL doit aller. LOW JUMP RST 1 Cette instruction Restart permet d'appeler une routine du système d'exploitation ou de la RAM située dans la même zone d'adresses. L'instruction RST doit être suivie immédiatement par l'adresse de la routine à appeler. Comme 14 bits suffisent pour définir une adresse comprise entre 0 et &3FFF, les deux bits supérieurs restants sont utilisés pour sélectionner la ROM ou la Ram: Bit 14=0 Sélection du système d'exploitation Un appel de la routine système pourrait donc se présenter ainsi: RST 1 Le bit 15 mis sélectionne la RAM dans la zone de &C000 à &FFFF, alors que le bit 14 annulé appelle le système d'exploitation. Le code à l'adresse 8 est constitué uniquement par un saut à l'adresse &B98A. SIDE CALL RST 2 Cette instruction Restart permet d'appeler une routine d'une ROM d'extension. Cette instruction est utilisée lorsqu'un programme sous forme d'un module de ROM nécessite plus de 16 kilo-octets et ne peut pas tenir dans un seul module d'extension. Le SIDE CALL permet alors d'appeler une routine se trouvant dans la seconde, la troisième ou la quatrième ROM appartenant au programme, sans qu'il soit pour cela nécessaire de connaître le numéro absolu de la ROM qu'il s'agit d'appeler ainsi. L'instruction RST 2 doit être suivie de l'adresse de la routine - &C000, c'est-à-dire de l'adresse relative par rapport au début de la ROM. Les deux bits supérieurs servent à sélectionner l'une des quatre ROMs différentes utilisées. Le code à l'adresse &0010 est constitué uniquement par un saut à l'adresse &BA1D. FAR CALL RST 3 Cette instruction Restart permet d'appeler une routine n'importe où en ROM ou en RAM. L'instruction RST 3 doit être suivie de l'adresse sur deux octets d'un bloc de paramètres composé de trois octets. Les deux premiers de ces octets-paramètres contiennent l'adresse de la routine qui doit être appelée et le troisième octet doit contenir l'état ROM/RAM souhaité. Les valeurs de 0 à 251 permettent d'appeler une ROM supplémentaire et les quatre valeurs restantes ont la fonction suivante: Valeur &0000-&3FFF ;&C000-&FFFF Le code à l'adresse &0018 est constitué uniquement par un saut à l'adresse &B9C7. RAM LAM RST 4 Cette instruction Restart permet de lire à partir d'un programme en langage-machine le contenu de la RAM, quel que soit l'état de la ROM choisi. L'instruction RST 4 remplace alors l'instruction LD A,(HL) HL doit donc contenir l'adresse de la case mémoire dont le contenu doit être lu. Le code à l'adresse &0020 est constitué uniquement par un saut à l'adresse &BAD6. FIRM JUMP RST 5 Cette instruction Restart permet de sauter à une routine du système d'exploitation. L'adresse doit être placée immédiatement à la suite de l'instruction RST 5. La ROM du système d'exploitation est sélectionnée avant le saut à la routine puis elle est déconnectée après le retour. Le code à l'adresse &0028 est constitué uniquement par un saut à l'adresse &BA35.
|