| ★ CODING ★ Premiers programmes avec la gamme Amstrad Plus et GX-4000 ★ |
| Utilisation avancée de la mémoire RAM/ROM sur la gamme Plus/GX |
Utilisation avancée de la mémoire RAM/ROM sur la gamme Plus/GX
|
Pour cet article, nous utiliserons les macros définies dans [ l'annexe sur les connexions RAM/ROM ]
Elles sont au nombre de quatre :
- MMR (spécifique 6128 et 6128+)
- RMR (tous modèles)
- UPPER_SELECT (tous modèles)
- RMR2 (spécifique Plus)
Je vous conseille fortement de les utiliser plutôt que d'écrire directement les valeurs binaires ou hexa correspondantes, votre code sera LISIBLE.
Le petit graphique de [ l'article précédent ] est toujours d'actualité, si vous voulez utiliser ROM basses, ROM hautes et l'Asic en même temps, il faudra positionner pile et code dans la zone #8000-#BFFF. Si vous voulez exécuter du code depuis les ROM, c'est possible mais il faudra toujours conserver la pile dans la zone #8000-#BFFF ou alors ne pas l'utiliser!

Pour configurer l'espace mémoire à sa guise, il faut jongler avec plusieurs macros (ou fonctionnalités de l'ASIC) qui travaillent de concert. Voici un résumé en image.

Le UPPER_SELECT permet de sélectionner les banks 0 à 31 de la cartouche avec les indexes 128 à 159 (bit 7 indique qu'on utilise la cartouche).
Connecter une ROM haute dont le nombre est inférieur à 128 va passer par un remapping de l'ASIC.
- La ROM haute zéro (typiquement le BASIC) est en fait la bank 1 de la cartouche BASIC (ou 129).
- La ROM haute 7 (typiquement l'AMSDOS) est en fait la bank 3 de la cartouche BASIC (ou 131) sauf sur GX4000 et 464+.
MAIS! Car il y a un mais. Si une carte d'extension ROM est connectée sur le port d'extension, la ROM a priorité et son numéro n'est pas remappé vers la cartouche. Ouf!
Le RMR2 permet de sélectionner la ROM basse DE LA CARTOUCHE (une ROM d'extension n'aura pas priorité sur cette valeur) à mapper en tant que ROM basse. Les indexes 0 à 7 sont en réalité équivalent aux indexes 128 à 135 (banks de la cartouche indexées de 128 à 159).
Dans RASM, la création de snapshot se fait avec des ROM d'extension en utilisant la directive ROMBANK. Si vous voulez faire comme sur cartouche, utilisez les indexes 128 à 159 avec la directive ROMBANK.
Si vous voulez être compatible avec des extensions mémoires qui ne tiennent pas compte de l'ASIC, il est indispensable de remettre la mémoire par défaut avant tout usage de la page ASIC.
Si vous ne faites pas ça, chaque écriture dans l'ASIC se fera aussi dans l'extension incompatible. Oui, une compatibilité avec ces extensions empêche d'utiliser le mode ALLSLOT (le fameux #C2, #CA, #D2, ...).
Si vous avez besoin de connecter/déconnecter l'ASIC régulièrement ET d'avoir une ROM basse particulière, n'oubliez pas qu'il faut systématiquement la repréciser avec le RMR2. En conséquenc de quoi la macro par défaut n'est pas toujours utilisable, on pourrait la faire évoluer de cette façon pour tenir compte d'un paramètre de ROM basse.
Charge à vous de précharger A avec votre ROM basse courante que vous conservez dans une variable.
Il ne faudra pas oublier non plus le mode graphique que vous utilisez (c'est rarament un cas variable, mais qui sait?).
Il est possible avec RMR2 de placer la ROM basse ailleurs que dans la zone #0000-#3FFF.
Il peut-être intéressant de vouloir placer la ROM en #8000-#BFFF pour conserver ses sauts d'interruption en #38 dans le début de la mémoire.
Cependant, chaque connexion à l'ASIC va forcer le retour de la ROM basse en #0000-#3FFF.
Aussi ce genre de configuration doit être utilisé en désactivant d'abord la ROM basse (ou se préparer à se retrouver éventuellement dedans).
Ce n'est pas spécialement performant, ça dépend encore une fois des cas d'usage mais surtout il devient impossible d'utiliser la ROM basse ailleurs qu'en #0000-#3FFF si vous voulez vous en servir comme source de données pour l'ASIC (typiquement des sprites).
|
Page créée en 148 millisecondes et consultée 26 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. |