CODINGCLASSEURS WEKA ★ Comment exploiter toutes les ressources et augmenter les performances de votre AMSTRAD CPC ★

4/2.8 - Les instructions RESTART des CPC (9e Complément)Coding Classeurs Weka
4/2 - Assembleur Z80 : Définitions et rappels de base

4/2.8 - Les instructions RESTART des CPC

Les CPC (464, 664 et 6128) possèdent plus de mémoire que ce que peut théoriquement adresser un Z 80. Effectivement, le bus d'adresse du Z 80 comporte 16 connecteurs, ce qui lui permet d'adresser 2*16 mémoires, soit 64 Ko. Si nous prenons le cas du CPC 464, il possède 64 Ko de RAM et 32 Ko de ROM. Pour que cette configuration mémoire soit possible, le 464 a recours à une technique spéciale appelée « Bank Switching » : la mémoire est divisée en plusieurs zones (appelées banques) qui se chevauchent. A chaque instant, sur deux banques qui se chevauchent, une seule est active. Le choix de l'accessibilité à chaque banque est entièrement commandé par soft (par logiciel).

Les constructeurs du CPC ont eu la bonne idée de créer de nouvelles instructions pour passer d'une banque de mémoire à l'autre qui se trouvent dans les diverses banques de l'ordinateur. En fait, ces instructions n'ont pas été créées à proprement parler, mais des fonctions particulières ont été affectées aux cinq premières instructions RESTART (RST 1 à RST 5).

Remarque : sur les ordinateurs CPC, les instructions RST 0 à 7 remplacent les instructions RST #00 à RST #38 habituellement rencontrées sur les ordinateurs à base de Z 80. L'instruction RST 0 signifie qu'un appel à la routine située en RAM à l'adresse #0000 va être effectué. L'instruction RST 1 signifie qu'un appel à la routine située en RAM à l'adresse #00xx va être effectué, ainsi de suite jusqu'à l'instruction RST 7 qui active une routine située en RAM à l'adresse #0038.

RESTART 1 à 5

Les RESTART 1 à 5 sont utilisés comme des instructions JMP ou CALL, avec cependant une particularité de codage pour certains d'entre eux. Mais voyons comment utiliser ces instructions.

RST 1 : LOW JUMP

L'instruction RST 1 permet d'accéder à une routine située dans la ROM basse (entre les adresses #0000 et #3FFF).

L'instruction RST 1 est utilisée de la manière suivante :

RST 1
DW Adresse

Les bits 0 à 13 de l'adresse définissent une adresse comprise entre 0 et #3FFF ou #C000 et #FFFF. Le bit 14 permet de sélectionner la RAM basse (s'il est à un) ou la ROM basse (s'il est à zéro). Le bit 1 5 permet de sélectionner la ROM Basic (s'il est à zéro) ou la RAM haute (s'il est à un).

Par exemple, pour accéder à une routine d'adresse #1530 située dans la ROM basse, il faudra faire :

RST 1
DW #1530+ #0000

Pour accéder à la même routine, mais située dans la RAM, il faudra faire :

RST 1
DW #1530+ #4000

Les états de sélection de la RAM/ROM sont restitués à leurs valeurs d'origine en fin de traitement du RST 1.

RST 2 : SIDE CALL

Cette instruction RESTART permet d'accéder à une routine située dans une ROM d'extension. L'adresse à accéder dans la ROM d'extension est précisée dans le mot qui suit l'instruction RESTART, de la manière suivante :

RST 2
DW Adresse

Les bits 14 et 15 de l'adresse qui suit le RST 2 indique laquelle des 4 ROM d'extension va être accédée. Les bits 0 à 14 donnent l'adresse à accéder. L'adresse réelle est bien sûr obtenue en ajoutant l'adresse basse d'implantation de la première ROM d'extension, soit #C000. La ROM supérieure est validée, et la ROM inférieure dévalidée. Les états de sélection de la RAM/ROM sont restitués à leurs valeurs d'origine en fin de traitement du RST 2.

RST 3 : FAR CALL

L'instruction RST 3 permet d'accéder à une routine située n'importe où en RAM ou en ROM. La forme générale d'utilisation de cette instruction est la suivante :

RST 3

DW Adresse
DB ROM Select

L'adresse qui suit le RST 3 (sur 2 octets) indique l'adresse à accéder (entre #0000 et # FFFF).

L'octet de ROM Select qui suit l'adresse indique la RAM ou la ROM dans laquelle va se faire l'appel.

Cet octet est codé comme suit :

0..251 : ROM supérieure validée, ROM inférieure dévalidée
252 : ROM supérieure validée, ROM inférieure validée
253 : ROM supérieure validée, ROM inférieure dévalidée
254 : ROM supérieure dévalidée, ROM inférieure validée
255 : ROM supérieure dévalidée, ROM inférieure dévalidée

Les états de sélection de la RAM/ROM sont restitués à leurs valeurs d'origine en fin de traitement du RST 3.

RST 4 : RAM LAM

Cette instruction permet de lire un octet en mémoire à l'adresse contenue dans le registre HL au moment de l'appel. Les RAM supérieure et inférieure sont dévalidées pendant l'exécution d'un RESTART 4. Elle s'utilise donc de la manière suivante :

LD HL, Adresse en RAM RST 4

RST 5 : FIRST JUMP[

Cette instruction permet d'accéder à une routine contenue dans la ROM inférieure. L'adresse de la routine à accéder (entre #0000 et #3FFF) est placée dans le mot qui suit l'instruction RST 5 de la manière suivante :

RST 5
DW Adresse

La ROM inférieure est validée pendant l'instruction RST 5, puis dévalidée en sortie du RESTART. L'état de la ROM supérieure reste par contre inchangé.

Les autres RESTART RST 0 : RESET

L'instruction RST 0 est un RESET soft qui place l'ordinateur dans le même état d'initialisation qui suit sa mise sous tension.

RST 6 : USER RESTART

L'instruction RST 6 est réservée à l'utilisateur. Elle peut être utilisée pour étendre et personnaliser le jeu d'instructions du Z 80 en utilisant la même méthode que pour les RST 1 à 5.

Lorsque la ROM inférieure est validée et qu'une instruction RST 5 est exécutée :

  • l'état des ROM est sauvegardé en RAM à l'adresse #002B,
  • la ROM inférieure est dévalidée,
  • le code situé en #0030 en RAM est exécuté par CALL #0030.
Lorsque la ROM inférieure est dévalidée et qu'une instruction RST 5 est exécutée :
  • le code situé en #0030 en RAM est exécuté par CALL #0030.
RST 7 : INTERRUPT

Cette instruction est réservée aux interruptions et ne peut être activée par le programme.

Page précédente : 4/2.7 - Les banques ROM ou FIRMWARE : FONCTIONS CLAVIER (!)
Je participe au site:

» Vous avez remarqué une erreur dans ce texte ?
» Aidez-nous à améliorer cette page : en nous contactant via le forum ou par email.

CPCrulez[Content Management System] v8.732-desktop
Page créée en 001 millisecondes et consultée 505 fois

L'Amstrad CPC est une machine 8 bits à base d'un Z80 à 4MHz. Le premier de la gamme fut le CPC 464 en 1984, équipé d'un lecteur de cassettes intégré il se plaçait en concurrent  du Commodore C64 beaucoup plus compliqué à utiliser et plus cher. Ce fut un réel succès et sorti cette même années le CPC 664 équipé d'un lecteur de disquettes trois pouces intégré. Sa vie fut de courte durée puisqu'en 1985 il fut remplacé par le CPC 6128 qui était plus compact, plus soigné et surtout qui avait 128Ko de RAM au lieu de 64Ko.