★ CODING ★ LOGON CPCPLUS 41: PROGRAMMATION DE L'ASIC ★ |
LOGON CPCPLUS 41: Programmation de l'ASIC |
Ce mois-ci, je ne vous proposerais pas une nouvelle version du B-Asic bien que nombreuses soient les idées qui ont traversé mon esprit fiévreux... Il faut bien souffler un peu... Pour tout dire, il est dans mes projets de reconvertir la version actuelle du basic pour qu'elle puisse fonctionner dans les banques mémoire du 6128.Ceci aura pour conséquences de :
Je tiens à ce propos à préciser que l'utilisation de la ram supplémentaire est devenue nécessaire à cause des futurs développements du Logon Basic. Je regrette seulement que Amstrad ait pu développer une machine 64K de ram en 1990... Il n'y a pas de petites économies diront certains!! Commençons tout d'abord par une parenthèse que j'avais laissée ouverte dans le N°38. LA CONNEXION DE L'ASIC Celle-ci est ,effectuée grâce à une fonction du Gate Array, que les ingénieurs Amstrad ont nommé RMR2 (pour Secondary Rom Mapping Register). D'habitude, le Gate Array gère la connexion des Roms, le mode graphique et le compteur d'interruption grâce à une fonction appelée RMR. La sélection de ce registre étant effectuée grâce aux bits 6 & 7 envoyés au Gate Array (Port #7F00). La sélection entre le mode RMR et le mode RMR2 est effectuée grâce au bit 5. Si celui-ci est à 0, alors les 5 bits de poids faible sont interprétés en RMR. S'il est à 1, alors les 5 bits de poids faible sont interprétés en RMR2. Ce bit 5 ne servait à rien sur les CPC de vieille génération, et c'est la raison pour laquelle les concepteurs du Plus l'ont utilisé. Mais que se passe-t-il avec un programme conçu sur l'ancienne machine et positionnant ce bit 5 à 1 ( puisque sa valeur importait peu sur l'ancienne gamme de CPC) ? Eh bien rien du tout!! « Pourquoi cela ?? » criez-vous tous en c?ur !!! Parce-que ce fameux bit 5 n'est opérationnel que si l'Asic est délocké... Or, pour délocker l'Asic, il est nécessaire d'envoyer 17 octets précis sur le port #BC00 (Port servant normalement de registre d'index pour le CRTC). Il n'est donc pas possible qu'un programme positionnant ce bit 5 à la valeur 1 par « mégarde » puisse activer la fonction RMR2. Considérons que l'Asic est délocké...
Détaillons un peu la fonction RMR2 (Je vous conseille la lecture du Cent pour Cent N° 35 pages 44, 45 si vous voulez plus d'informations sur le mode RMR). Les bits 0, 1, et 2 permettent de sélectionner un N° de Rom, ce numéro allant de 0 à 7. Je reviendrais sur le fonctionnement des Roms un peu plus loin... Les bits 3 et 4 permettent:
Lorsque la page I/O de l'Asic est ON, celle-ci est prioritaire par rapport à toutes les Rams connectables entre #4000 et #7FFF. LA CONNEXION DES ROMS Hem... pas de confusion... Le CPC Plus est capable de supporter un nombre maximum de 32 Roms de 16 K chacune (Ce qui porte la capacité maximale des Roms à 512 K). Les Roms peuvent être gérées par les anciens mécanismes du CPC via le Gate Array (Fct° RMR) et le port #DF00 (Sélection du N° de Rom Haute). Cependant, le port #DF00 ne gère pas un ordre physique des Roms puisque la Rom Basic porte le numéro 00 et la Rom disque le numéro 07. Il est cependant possible de sélectionner les Roms du Plus dans leur ordre physique, ceci en plaçant le bit 7 du port #DF00 à 1 ( Ce qui nous donnera donc une valeur de 128 à 159). Résumons les modes de sélection des roms du CPC Plus:
A l'heure actuelle, il n'existe pas à ma connaissance de cartouche CPC Plus utilisant 32 Roms, c'est-à-dire 512 K de données. Registre RMR2. N° de Rom Physique (Bit 0.1.2) sélectionné entre Il faut noter que seules les 8 premières ROMs ont la « chance ») de pouvoir être connectées hors de l'espace #C000-#FFFF. Si nous avons sélectionné les Roms, cela ne veut pas dire pour autant qu'elles sont connectées! Ceci est réalisé grâce à la fonction RMR du Gate Array.
Le schéma suivant résumera toute cette prose logonienne :
Voilà je pense avoir été complet sur le sujet... Ajoutez à ça toutes les possibilités des rams du CPC via la fonction MMR (Memory Mapping Register) du Gate Array et la jungle reprend ses droits...
Petit défi: J'attends de vous, lecteurs, une routine permettant de tester si le CPC est un Plus ou un CPC ordinaire (Et sans beurre...). Réponse dans 2 mois! Et pour finir la prose de ce mois, voici une autre table résumant la gestion hardware des sprites du Plus... (Pfewww, j'en ai ma claque des tables!!).
Dernière chose; vous aurez sans doute remarqué que la dernière version du BASIC accusait un léger défaut. Effectivement, utilisée avec la cartouche « nouvelles Roms/Burnin' Rubber » les couleurs redéfinies par un RSX exploitant la palette étendue ( genre ùINKFRVB ) étaient réinitialisées par la commande MODE. Le problème ne se posait pas si vous utilisiez la cartouche dite « anciennes roms », mais vous ne la possédez pas tous. En apportant les modifications se trouvant dans l'encadré noir de la page 48, ce problème sera résolu quelle que soit la cartouche utilisée. Longshot. Logon System, ACPC n°41 page 49-50-51
|