CODING ★ BIS : TOUTE GAITE - Les secrets du GATE-ARRAY ★

Bidouilles ACPC n°15 - Les secrets du GATE ARRAY (2/2)
Comme vous avez pu vous en apercevoir le mois dernier, les bidouilles n'étaient pas finies. Deux pages pour parler du gate-array, c'est relativement léger. Surtout qu'il est balàz l'animal, et qu'il abat pas mal de boulot au sein du CPC et à lui tout seul. Bon, passons d'ores et déjà au bla-bla habituel.

Tout d'abord, je tiens à rattraper une pétouille que j'ai laissé fuser le mois dernier. Les numéros de couleur que vous passez lors des commandes envoyées au "gai taré" ne sont pas celles utilisées sous Basic. Il faut faire une petite conversion et, à titre indicatif, un tableau qui contient ces équivalences est donné dans le fanzine Cra-zy Croc, numéro 15. Voilà qui remet les pendus en l'air, de rien. Et puis, comme Cent Pour Cent n'est pas le plus nul des magazines pour CPC, nous vous donnons le tableau de conversions des couleurs, du Basic vers le 6845, mais c'est seulement pour ceux qui ne lisent pas Crazy Croc.

RAMBO VIT DES HAUTS ET DES BAS

Ce petit intertitre qu'il faut lire Rom, beau vidéo et débats est là pour annoncer le chapitre parlant de ta commutation des ROM. Comme nous l'avons dit dans le précédent numéro (je fais ici appel à vos souvenirs quelque peu défraîchis par les longues nuits blanches passées à tirlipoter le CPC) le gai taré s'occupe de tout ce qui est travaux sur l'environnement La ROM faisant partie de l'environnement, le gai taré la prend en charge. Comme vous le savez, un micro ordinateur doit posséder de la ROM et de la Ram, respectivement pour gérer le matériel et traiter des données. Mister Amstrad himself s'est dit, je cite de source sûre : moins de 64 Ko, c'est pas terrible pour un micro, alors il faut trouver une astuce pour que la ROM ne prenne pas de place dans l'espace d'adressage du Z80. Ah, mille millions d'excuses et de sabords, j'ai oublié de vous dire que le Z80 ne peut accéder qu'à 65 536 octets, cela étant dû au fait que son bus d'adresses ne contient que 16 bits. Si on avait mis les 32 Ko de ROM en ligne et sur le slot zéro, c'est-à-dire dans l'espace d'adressage normal, il est facile de comprendre que seuls 32 autres Ko de Ram auraient pu être ajoutés. 32 Ko pour un écran, un système, un Basic, ça ne fait pas lourd. Si. en plus, on rajoute la gestion du lecteur de disquettes, je connais des octets qui se seraient sentis un peu comme dans une boîte de conserve de sardines aux heures de pointe. Donc, c'est ici que les concepteurs de notre CPC ont fait le plus fort, ils se sont dit : si on met de la ROM sur un autre plan, et qu'elle prend la place de la Ram, on gagne de l'espace et on peut garder 64 Ko de Ram sans rien perdre. Le gai taré a donc été construit dans le but de commuter les ROM pour qu'elles remplacent les Ram lorsqu'on en a besoin.
Comment ça marche ? C'est très simple.

Avant tout, voici la signification des bits esclaves lorsque les bits de commande 7 et 6 sont respectivement à 1 et à 0.

Bit 5 : toujours à 0 sans quoi je ne me sens absolument pas responsable de ce qui peut arriver.
Bit 4 : sert à remettre le diviseur (viseur ?) d'interruptions à zéro lorsqu'on le met à 1. Pas mal !
Bit 3 : connecte la ROM supérieure s'il est à 0. Dans le cas contraire, il la déconnecte. Etonnant, non ?
Bit 2 : connecte la ROM inférieure s'il est à 0. Dans le cas contraire, il la déconnecte. Etonnant, non ?

Il Faut que j'arrête, car je me répète.

Bit 1 : poids fort du contrôle de mode écran.
Bit 0 : poids faible du contrôle de mode écran.
Pour les Basicceurs fidèles, sachez que le contrôle de ce port avec cette commande vous est interdit En effet, vous faites pour ainsi dire sauter les ROM à tous les coups et empêchez le Basic d'interpréter vos commandes d'INP et d'OUT. C'est pas de votre faute, mais nous voyons ici qu'un avantage peut devenir aussi un inconvénient. Bref, à Basic stérile reste assembleur puissant. Pour faire sauter les deux ROM en mode 1, il suffit de programmer :

LD BC,#7F81
OUT (C),C


tableau de conversions
des couleurs,
du Basic vers le
GATE ARRAY 6845

Et c'est là que le chef pose la question piège, histoire de vouloir me planter. Des baffes que j'y mettrais dans le beignet moi, au chef ! Bref, pour ne pas perdre la face (secteur &C4, piste 37), je réponds à sa question que je vous pose : "Comment on fait pour sélectionner la ROM 7 du lecteur de disquettes ?". dit-il de sa voix glauque qui ferait peur à un poissonnier de Rungis un matin de printemps à 4 h 23 précises. On sélectionne la ROM supérieure et on met 7 sur le port &DF00, lui dis-je sarcastiquement au sortir d'un soupir agacé d'une voix sensuelle et pulpeuse appuyée d'un upercut de 15 tonnes dans la mâchoire gauche préalablement endommagée par mes soins. Que j'aime à entendre les deux mots outch et bobo sortir de la bouche de notre vénéré et respecté chef qui va d'aventures en aventures de la Porte de Versailles à La Défense (warf, warf, warf, mort de rire).
Pour tout vous dire, voici le source :

LD BC,#7F84 ; en mode 0
OUT (C),C
LD BC,#DF07 ; ROM 7 dans C
OUT (C),C

En ce qui concerne le mode écran, je crois que vous avez compris le fonctionnement. C'est la valeur binaire des deux bits de poids faible avec les bits 7 à 1 et 6 à 0, qui forcent le mode écran désiré. N'utilisez pas le mode 3. c'est bêtement un mode 0 avec seulement 4 couleurs. En ce qui concerne la détection de la multiface, elle passe aussi par le port &DF00, mais il faut que je redemande à Rubi comment on fait, car j'ai personnellement oublié (sympathique, mais la honte sur moi quand même !).

BANK IS SO NICE

Oui, monsieur Atari, même si on n'a que 64 Ko, on sait en utiliser 128 sur la machine de même type. 128 Ko c'est beaucoup pour un CPC, mais encore faut-il savoir s'en servir. Le gai taré possède toutes les facultés le rendant apte à contrôler parfaitement la situation. Alors, pourquoi aller chercher ailleurs ce que l'on a dans les banques ? Un simple petit OUT, fonctionnant même sous Basic, permet de disposer des 64 Ko supplémentaires. Ce qui est bête, c'est qu on peut les utiliser sous Basic, mais sans en profiter réellement. Je m'explique : il est possible de travailler avec la mémoire des 6128 en l'utilisant comme zone de stockage, mais cela oblige le programmeur à n'utiliser qu'un programme Basic de moins de 15 Ko, variables incluses. Dans ce cas, il vaut mieux savoir programmer un tout petit peu en assembleur, sans quoi la taille du logiciel créé se trouve relativement limitée. En fait, les 128 Ko supplémentaires se trouvent, par banque de 16 Ko, tous de &4000 à &7FFF.

  • OUT &7F00,&C0 est la configuration d'origine.
  • OUT &7F00,&C4 permet de mettre la première banque de 16 ko entre &4000 et &7FFF à la place de la mémoire normale, ce qui explique l'inconvénient précédemment cité.
  • OUT &7F00,&C5 positionne la deuxième banque à la même place.
  • OUT &7F00,&C6 fait de même pour la troisième.
  • OUT &7F00,&C7 met la quatrième banque à la même adresse. Pour commuter les banques, ces simples OUT suffisent. Attention, il n'est possible d'utiliser l'écran en &4000 qu'en mode &C0, c'est-à-dire sur le plan Ram d'origine. Voilà qui, j'espère, vous rendra satisfait.

CONTENT, GAI, HAPPY

C'est ici que finissent ces bidouilles qui ont eu l'honneur de vous présenter le gai taré en deux mois. Que votre CPC profite de ces nouvelles connaissances et que le règne du gai arrive. A bon programmeur, salut.

Sined le Pagayeur , ACPC n°15 , p62

Page précédente : Bidouilles ACPC n°14 - Les secrets du GATE ARRAY (1/2)

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

Lien(s):
» Coding » Assembleur ACPC n 04 - Initiation : Débuter avec sont assembleur
» Coding » Bidouilles ACPC n°40 - Gestion d'erreurs des routines disques
» Coding » Assembleur ACPC n°29 - On assemble ensemble
» Coding » Assembleur ACPC n°24
» Coding » Assembleur ACPC n 07 - Initiation : Les INC / DEC / CP
» Coding » Assembleur ACPC n°36 - Dis moi, c'est quoi l'assembleur
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 203 millisecondes et consultée 2605 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.