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 :

  1. Libérer la totalité de la Ram habituellement utilisée par le basic.
  2. Permettre l'ajout de nouvelles instructions sans que la place mémoire dût en souffrir.
  3. D'écarter du B-Asic tous les malheureux possesseurs de 464 Plus sans extension DK'tronics.

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!! 
Bref, et en attendant la prochaine version (V1.4), la rubrique Plus de ce mois-ci sera consacrée aux techniciens qui désirent attaquer directement les registres de l'Asic.

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é...



DOC n°1

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:

  • De positionner la rom sélectionnée avec les bits 0,1,2 à un endroit précis. 
  • De connecter la page I/O de l'Asic entre #4000 et #7FFF (Notez que seule une combinaison permet sa connexion et oblige implicitement la sélection de la Rom (0, 1, 2) entre #0000 et #3FFF) 

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:


DOC n°2

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 
0000-3FFF (Cf Bits 3 et 4 de RMR2) 
4000-7FFF 
8000-BFFF

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 bit 3 du Reg RMR connectera donc la Ram (1) ou la Rom (0) - dont le N° a été précisé grâce au port DF00 à l'adresse C000-FFFF. 
  • Le bit 2 du Reg RMR connectera la Rom dont le N° et l'adresse sont précisés via le registre RMR2.

Le schéma suivant résumera toute cette prose logonienne : 


DOC n°3


DOC n°4

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... 
Je vous conseille de vous référer à la rubrique Logon du numéro précédent en ce qui concerne la gestion des Rams. Je vais néanmoins clarifier certaines choses au niveau des priorités RAM/ROM/ASIC IO

  1. La page Asic est prioritaire sur toutes les Rams connectées.
  2. Lorsqu'une Rom est connectée, une écriture affecte la Ram sélectionnée "sous" cette Rom. 

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!!).


DOC n°5

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

★ ANNÉE: 1991
★ AUTEUR: LONGSHOT
★ INFO: Download la derniere version B-ASIC
★ UPDATED: 10/08/2019

Page précédente : LOGON CPCPLUS 40: Gestion evoluée des sprites hard
★ AMSTRAD CPC ★ DOWNLOAD ★

Je participe au site:
» Newfile(s) upload/Envoye de fichier(s)
★ AMSTRAD CPC ★ A voir aussi sur CPCrulez , les sujets suivants pourront vous intéresser...

Lien(s):
» Coding » LOGON CPCPLUS 47: Les derniers mystères
» Coding » LOGON CPCPLUS 48: En avant l'ASIC
» Coding » Cours CPC Plus par AST / IMPACT
» Coding » LOGON CPCPLUS 38: Dessinez en 4096 couleurs
» Coding » LOGON CPCPLUS 39: Exploitez les sprites de votre CPC Plus

QUE DIT LA LOI FRANÇAISE:

L'alinéa 8 de l'article L122-5 du Code de la propriété intellectuelle explique que « Lorsque l'œuvre a été divulguée, l'auteur ne peut interdire la reproduction d'une œuvre et sa représentation effectuées à des fins de conservation ou destinées à préserver les conditions de sa consultation à des fins de recherche ou détudes privées par des particuliers, dans les locaux de l'établissement et sur des terminaux dédiés par des bibliothèques accessibles au public, par des musées ou par des services d'archives, sous réserve que ceux-ci ne recherchent aucun avantage économique ou commercial ». Pas de problème donc pour nous!

CPCrulez[Content Management System] v8.7-desktop/cache
Page créée en 124 millisecondes et consultée 1361 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.