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 ★

Aucun fichier de disponible:
» Vous avez des fichiers que nous ne possédons pas concernent cette page ?
★ AMSTRAD CPC ★ A voir aussi sur CPCrulez , les sujets suivants pourront vous intéresser...

Lien(s):
» Coding » LOGON CPCPLUS 44: Des Rasters sur CPC+
» Coding » CPCplus : "Arnold V" Specification
» Coding » LOGON CPCPLUS 39: Exploitez les sprites de votre CPC Plus
» Coding » LOGON CPCPLUS 40: Gestion evoluée des sprites hard
» Coding » Chronique A100% CPC+ (Logon System)
» Coding » LOGON CPCPLUS 45: Le CPC plus en musique
Je participe au site:
» Vous avez des infos personnel, des fichiers que nous ne possédons pas concernent ce programme ?
» 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 362 millisecondes et consultée 2829 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.