Cette série d'article. D'écrira les possilbilltés internes de votre ordinateur et vous permettra d'utillsation au maximum toutes les routines résidantes. La description de ces rubrique sera abondamment commentée afin d. vous faciliter l'utilisation dans vos programmes. RAPPELS La configuration mémoire du 6128 est largement décrite dans son maqnue. nous en rappellerons les traits principaux : - une RAM de 64 K accessibles, comprenant:
- une partie "utilisateur" de 0000 à BFFF
- une RAM écran de C000 à FFFF
- une ROM système de 0000 à 3FFF
- une ROM Basic de C000 à FFFF
On voit d'ores et déjà que les ROM annexes doivent être connectées pour utilisation. Nous noterons également que si la fonction HIMEM est appelée en Basic, elle nous fournit la valeur 42619 (soit A676 en hexadécimal). il existe donc un espace mémoire entre A676 et C000 réservé pour une utilisation bien précise. C'est cet espace mémoire (figure 1) que nous allons étudier pendant quelque temps, car il présente des avantages non négligeables. Cet espace est en effet réservé aux "vecteurs" du système et du Basic. Les "vecteurs permettent d'obtenir des informations sur tout ce qui se passe au Cœur de la machine (accès aux routines de la ROM, flags, etc.). LES VECTEURS Les vecteurs du 6128 sont relativement nombreux et ne sont, généralement, pas au même endroit que sur le 464. Par exemple, Les 4 vecteurs que nous étudierons a4jourd'hui, les sélections des ROM annexes, sont placés aux adresses BA51, BA55. BA5F et BA66 sur le 6128 et aux adresses BA4A. BA54. BA5E et BA64 pour le 464. Certains accès sont néanmoins les mêmes sur les deux machines. nous essayerons de le signaler en vous demandant de les vérifier, car il est difficile d'étudier deux ROM en même temps. LES VECTEURS DE CONNEXION DE LA ROM Les ROM Basic et système étant annexées, il est nécessaire de les connecter, dans certains programmes, afin de réutiliser des routines déjà écrites et ainsi de gagner du temps et de la place en mémoire. Les connexions de ces ROM peuvent se réaliser en appelant les adresses suivantes: - B900 connexion de la ROM haute ( C000 à FFFF, Basic)
- B903 déconnexion de la ROM haute
- B906 connexion de la ROM basse ( 0000 à 3FFF, système)
- B909 déconnexion de la ROM basse
(Ces adresses sont identiques sur CPC 464.) Après désassemblage, il s'avère que les adresses mentionnées ne contiennent que des sauts et ce sont les adresses de renvoi que nous allons étudier.
B900 JP BA5F ; saut à BA5F B903 JP BA66 ; saut à BA66 B906 JP BA51 ; saut à BA51 B909 JP BA58 ; saut à BA58ROUTINES DE CONNEXION ROM HAUTE C000 à FFFF CONNEXION BA5F DI ; Interdiction de toute interruption BA60 EXX ; Echange le contenu des registres auxiliaires avec celui des registres d'usage général BA61 LD A,C ; Charge l'accumulateur avec la valeur de C BA62 RCS 3,C ; Le bit n° 3 du registre e est mis à 0 BA64 JR BA68 ; Saut à l'adresse BA6BDECONNEXION BA66 DI ; Interdiction de toute interruption BA67 EXX ; Echange des contenus BA68 LD A,C ; Charge C dans. l'accumulateur BA69 SET 3,C ; Met le bit 3 de C à 1ROM BASSE 0000 à 3FFF CONNEXION
BA51 DI BA52 EXX BA53 LD A,C BA54 RES 2,C BA56 JR BA6BDECONNEXION BA5S DI BA59 EXX BA5A LD A,C BA5B SET 2,C BA5D JR BA6BSous-programmes (BA6B) .
BA68 OUT (C),C ; Sortie de la valeur de C sur le port BA6D EXX ; Echange des contenus BA6E EI ; Réactivation des interruptions BA6F RET ; Retour au programmeCOMMENTAIRES Il est nécessaire d'apporter quelques précisions sur l'utilisation de ces routines. On voit que toutes celles-ci sont basées sur le transfert des registres auxiliaires et des registres d'usage généraI. D'après les essais que nous avons effectués, il semble que B' contient la valeur 7F et C' la valeur (hexa). Dans le sous-programme BA6B, on adresse donc le port 7F (valeur sur les bits A8 il A15) et on lui fournit la valeur C.
Valeur de C ; 7 6 5 4 3 2 1 0 bit 7 à 1 Sélection d'un registre du gate array bit 6 à 0 (Registre ayant plusieurs fonctions) bit 5 bit 4 Analyse le compteur bit 3 à 1 Déconnecte la ROM haute à 0 Connecte la ROM haute bit 2 à 1 Déconnecte la ROM basse à 0 Connecte la ROM basse bit 1 Sélection du mode écran bit 0 Sélection du mode écran Nous verrons plus longuement l'utilisation de ce registre dans d'autres articles (mode écran, etc.).CONCLUSION On voit qu'on peut facilement utiliser des vecteurs de la RAM pour améliorer nos programmes. Dans ce cas et pour sélectionner le registre, deux impératifs: - placer la valeur 7F sur les bits AB à A 15 du bus (la valeur des bits A0 à A7 n'est pas critique) port;
- placer la valeur en fonction du résultat souhaité.
Nous avons utilisé ce programme pour désassembler la ROM Basic et systéme du 6128 avec succès. Le principe est le suivant ( exemple donné pour la ROM Basic ) : - connexion de la ROM de C000 à FFFF
- transfert de la ROM en RAM à l'adresse 4000 (16384)
- désassemblage à l'aide du moniteur DEVPAC. en prenant soin de le charger assez haut en mémoire (dans notre cas, il a été chargé en 760C).
A suivre ... ★ AMSTRAD CPC ★ A voir aussi sur CPCrulez , les sujets suivants pourront vous intéresser... |
CPCrulez[Content Management System] v8.7-desktop Page créée en 362 millisecondes et consultée 2091 foisL'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. |
|
|