CODINGPROGRAMMATION INITIATION ALIGATOR ★ Carte mémoire des CPC ★

Ali Gator - 09. Carte Mémoire CPC (Micro-Mag)
LES COURS DU PROFESSEUR ALI GATOR

Sur nos 64 ko disponibles, 16 ko de mémoire écran n'ont plus de secret pour nous. Reste donc 48 ko à explorer ensemble.

Cette carte mémoire, Ram implantée par la ROM lors de la mise sous tension de l'ordinateur, est identique quel que soit le modèle. Les données systèmes, vecteurs et autres zones réservées situées toujours au même endroit, assurent la compatibilité ascendante d'un modèle sur l'autre. Sa modification par l'utilisateur peut déboucher, après moult plantages, sur quelques astuces de programmation comme celles évoquées plus loin.

Carte mémoire de la RAM

  • &00 - &3F : zone des vecteurs de contrôle système ou vecteurs de Restait permettant la recopie de la ROM. &40 - &16F ; stockage des variables système de la ligne Basic traitée.
  • &170 - &AB7F : l'espace entre ces deux adresses est la zone réservée à l'écriture des programmes. Cette zone peut néanmoins se rétrécir par le haut si on utilise une extension quelconque. Un lecteur de disquette abaisse le plafond à &A67B. Les 1284 octets «perdus» sont en fait utilisés par les RSX pilotant le lecteur.
  • &AB80 - &ABFF : caractères redéfinissables par l'utilisateur.
  • &AC01 - &AC1B : vecteurs d'appel des routines Basic.
  • &AC1C - &ACA3 : Ram Basic où le système dépose temporairement des adresses qui lui sont nécessaires pour gérer certaines instructions comme NEXT, WEND, WIDTH, etc. Ou encore la largeur du pas pour la commande AUTO.
  • &ACA4 - &ADA3 : tampon clavier. Zone dans laquelle tout ce qui est rentré au clavier est stocké avant affichage ou exploitation.
  • &ADA4 - &AE8A : nouvelle Ram Basic utilisée par le système pour gérer les paramètres de certaines commandes comme ON ERROR, ENV, ENT, READ, DATA, etc. Rappelez-vous la leçon sur les fichiers binaires où était abordé le Header ou carte de visite des fichiers. C'est dans cette Ram Basic que se retrouvent certains paramètres du fichier tels que son type, sa longueur et le témoin de protection s'il y en a.
  • &AE8B - &B08C : espace réservé à la pile Basic et à son pointeur. Ici est stocké, par exemple, le point de départ d'un GOSUB afin qu'après l'exécution du sous-programme, le retour s'effectue au bon endroit. Une «pile» est un espace mémoire où des données sont empilées les unes sur les autres (adresses, valeurs, etc.). Loi commune à toutes les piles: dernier rentré, premier sorti. Ce qui signifie que la dernière valeur stockée sur le dessus de la pile sera obligatoirement la première à être récupérée par le système d'exploitation.
  • &B08D - &B8FF : Ram système d'exploitation. De nombreuses fonctions viennent, dans cet espace, œuvrer sur les couleurs, les fenêtres et les commandes graphiques. Presque tout ce qui a trait à l'affichage et au son transite par cette RAM.
  • &B900 - &BD73 : espace réservé aux vecteurs d'exploitation. Partie la plus intéressante, puisque là se trouve le point d'appel de nombreuses routines de la ROM. Vous connaissez tous les fameux CALL &BB18 ou CALL &BB06 ayant pour effet d'arrêter un programme tant qu'une touche n'est pas frappée. Ces deux vecteurs, accessibles sous Basic, appellent une routine en langage machine de la ROM. Il existe ainsi plus de 300 routines assembleur directement utilisables au sein d'un programme. Si toutes ne sont pas exploitables, certaines peuvent grandement faciliter votre tâche.
  • &BD74 - &BFFF : pile pour le Z80. Régie par le même principe que la pile Basic. Contentons-nous de ce rapide survol de la carte Ram, une vue complète et détaillée nécessiterait en effet de nombreuses pages. Mon rôle consiste simplement à orienter vos recherches. Commencez par la liste des adresses utiles de cette Ram, de nombreux ouvrages l'ont éditée (pour n'en citer qu'un: La Bible des CPC de chez Micro Application). Armé d'une bonne dose de patience, faites alors des essais à grands coups de Peek, de Poke, de CALL et même de Out. Observez les effets obtenus. Les plantages seront nombreux mais très vite, vous obtiendrez des résultats intéressants qui vous permettront de dépasser certaines contraintes du Basic.

Quelques astuces

Pour clore cette petite leçon, voici en vrac quelques effets intéressants obtenus après manipulation de la carte mémoire.

  • Un exemple tout simple d'amélioration du Basic. Ceux qui travaillent sur K7 ne disposent que de deux vitesses de sauvegarde: SPEED WRITE 1 ou 0. Si l'on utilise des K7 de bonne qualité, pourquoi ne pas augmenter cette vitesse par : POKE &B8D1,0 : POKE &B8D2,35.
  • Le reset par CTRL + SHITF + ESC sera interdit par un POKE &BDEE, &C9.
  • Les caractères redéfinis avec Symbol et Symbol After, n'ont plus de raison d'être? La solution: CALL &BB4E.
  • Avec ENV 1,100,3,1 : ENT 1,100,2,2 : SOUND 1,200,-2000,3,1,1,5 vous obtenez le son d'un hélicoptère du meilleur effet, mais que rien ne peut plus arrêter sauf un CALL &BCA7.
  • Lorsqu'on mélange Basic et programme binaire, ce dernier se trouve toujours au dessus du Basic. On peut cependant inverser les rôles. Pour cela, l'adresse de départ du Basic &170 doit être remontée. Sachant que celle-ci est contenue dans les cases &AEB0 et &AEB1, POKE &AEB0, 0 et POKE &AEB1, &30 feront débuter la mémoire Basic en &3000.
  • Plus de place sur votre écran, mais vous désirez le conserver momentanément tel quel. Très simple. Call &BC06, &40 libérera l'espace et CALL &BC06, &C0 restituera votre précieuse image.

A vous de continuer la liste, nos colonnes sont toujours ouvertes aux auteurs de Pokes ravageurs. Prochainement, l'ossature et l'organigramme d'un logiciel constitueront notre centre d'intérêt.

MICROMAG n°9 (Janvier 90)

★ EDITEUR: MICROMAG
★ ANNÉE: 1990
★ AUTEUR: CLAUDE LE MOULLEC
 

Page précédente : Ali Gator - 08. La mémoire écran

★ AMSTRAD CPC ★ A voir aussi sur CPCrulez , les sujets suivants pourront vous intéresser...

Lien(s):
» Coding Src's » Equalisers horizontal et vertical
» Coding » Ali Gator - 01 les Caracteres de Controle (Micro-Mag)
» Coding » Ali Gator - 03. TAG et les Modes Graphiques (Micro-Mag)
» Coding » Ali Gator - 02. Les Modes Graphiques (Micro-Mag)
» Coding » Les opérations, la pile et les registres spécialisés par ANTIBUG
» Coding » Ali Gator - 07. Les Fichiers ASCII (MicroMag)
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.7-desktop/c
Page créée en 326 millisecondes et consultée 2292 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.