CODING ★ LOGON CPCPLUS 38: DESSINEZ EN 4096 COULEURS ★

LOGON CPCPLUS 38: Dessinez en 4096 couleurs

C'est une exclusivité Amstrad Cent Pour Cent! Votre magazine préféré vous en donne toujours plus (c'est le cas de le dire) en créant pour vous cette nouvelle rubrique ou comment exploiter toutes les caractéristiques techniques de votre CPC Plus à l'intérieur de vos programmes Basic ou Assembleur.

Vous êtes l'heureux possesseur d'un CPC Plus? Bravo! Vous étiez très content de votre CPC (tout court) et avez décidé de vous offrir un CPC Plus car celui-ci, outre le fait d'être compatible avec la vaste logithèque que vous possédez déjà, offre de nouvelles caractéristiques techniques' absolument alléchantes (sprites, palette des couleurs étendue, scrolling hard, etc).

Malheureusement, lorsque vous allumez votre ordinateur, force vous est de constater qu'il ne s'agit ni plus ni moins, d'un simple CPC.

MAIS OU SONT MES PLUS?

Ca c'est vu du côté de l'utilisateur. Effectivement, il faut savoir que le CPC Plus est bel et bien doté de nouvelles fonctionnalités mais celles-ci sont encodées quelque part dans la mémoire de la machine et sont inaccessibles au commun des utilisateurs lambda. Le guide de l'utilisateur ne fait nullement référence à ces possibilités cachées... Celles-ci ne peuvent être exploitées que dans le cadre de jeux ayant pour support les fameuses cartouches qui viennent s'enficher dans le port prévu à cet effet sur la machine.

Seuls les éditeurs ayant passé un accord de développement avec Amstrad sont autorisés à produire des jeux sur ce format et exploiter ces capacités supplémentaires dissimulées au fin fond de la bécane. 
Amstrad ayant bien fait les choses, il faut disposer d'une séquence de codes (protégée par copyright) pour faire comprendre à la machine que nous désirons utiliser ses pleines capacités. Cette séquence n'est bien sûr connue que des seuls éditeurs ayant le droit de développer des jeux en cartouche.

LE POURQUOI DU COMMENT 

En tant que simple utilisateur, vous avez parfaitement le droit de chercher (et peut-être trouver) comment exploiter le plein potentiel de votre machine puisque vous vous en êtes porté acquéreur en la payant. C'est là que se trouve le petit oubli d'Amstrad. La société anglaise, désireuse d'offrir des logiciels de meilleure qualité aux « CPCistes», a permis aux éditeurs de créer de très beaux jeux mais n'a pas permis du même coup à l'utilisateur final d'exploiter à son compte les Plus de la machine. C'est le pourquoi de cette série d'articles qui n'a d'autres prétentions que de vous permettre enfin des réalisations aussi belles que Burnin' Rubber...

Même pour un programmeur averti, un rapide tour de la Rom Basic (qui se trouve sur la cartouche livrée avec la machine) ne lui permet pas de déceler la moindre trace d'une gestion de 4096 couleurs. 
Et pourtant, sur cette même cartouche se trouve justement Bumin' Rubber qui, lui, utilise tous les Plus de la machine.

C'est là qu'il faut chercher... Mais l'absence de toute documentation vous fera défaut pour savoir où et comment utiliser toutes ces nouvelles caractéristiques.

Nous vous proposons donc de faire le tour des nouveautés du Plus en commençant par sa large palette des couleurs.

LA FAMEUSE SEQUENCE

Il s'agit de 17 octets envoyés sur le port &BC00 (habituellement le registre de sélection du CRTC) qui provoquent l'activation de la nouvelle fonction du Gate Array : la fonction RMR2. .

Voici cette séquence de code :

255,0,255,119,179,81,168,212,98,57,156,70,43,21,138,205,238

La nouvelle fonction du Gate Array, RMR2, sera décrite dans un prochain article, mais sachez qu'elle permet, entre autres, de déverrouiller une page de registre I/O située entre &4000 et &7FFF.

Contrairement à ce que l'on a l'habitude de voir sur un Z80A au niveau des entrées/sorties, l'accès aux périphériques (ici l'Asic) est fait grâce à un procédé de Mapping Ram I/O. Celui-ci évite l'emploi des instructions d'I/O conventionnelles du Z80A. II suffit, pour adresser un périphérique, de placer un octet en mémoire I/O.

LE LOGONBASIC

Pour étendre vos possibilités de programmation avec de nouvelles instructions, complémentaires à celles du Basic que vous connaissez déjà, nous avons demandé aux Logon System de créer des commandes RSX Vous voici donc avec un Basic enrichi que nous appellerons le LogonBasic (Ou B-Asic), grâce auquel vous pourrez désormais exploiter pleinement les capacités de votre Plus...

Un chapitre technique sera réservé à la fin de chaque article pour ceux qui veulent aller plus loin et programmer leur Plus en Assembleur!

Mais tout d'abord, qu'est-ce que c'est-y que le logon il a préparé ce mois-ci ? Hein? 
Eh bien pour commencer, nous allons nous attaquer aux couleurs...

Tapez le listing ci-contre, sauvez-le sous le nom de logonbas (Save "Logonbas), puis tapez Run (c'est pas difficile jusque-là !)... Si tout se passe bien, un fichier Logonbas.cod est créé sur la disquette... 
Vous pourrez désormais utiliser le logonbasic en incluant en première ligne de vos programmes:

10 IF PEEK(&A350)<>&3A THEN MEMORY &A34F:LOAD "LOGONBAS.COD":CALL &A350

Vous disposez alors de 6 fonctions supplémentaires. 
En voici la description:

ùINKF,numéroencre,couleur

Permet de fixer une des 16 encres de fond avec une des 4096 couleurs. 
"numéroencre" est compris entre 0 et 15. "couleur" est compris entre 0 et 4095

ùINKS,numéroencre,couleur

Fixer une des 15 encres des Sprites avec une des 4096 couleurs. 
"numéroencre" est compris entre 1 et 15 "couleur" est compris entre 0 et 4095 N.B: L'encre 0 des sprites étant l'encre transparente.

ùBORDERP,couleur

Fixer la Couleur du Bord avec une des 4096 couleurs. 
"couleur" est compris entre 0 et 4095

ùINKFRVB, numéroencre, Rouge, Vert, Bleu

Fixer une des 16 encres de fond avec une des 4096 couleurs choisie en fonction des composantes Rouge, Vert et Bleu. 
"numéroencre" est compris entre 0 et 15 
"Rouge" est compris entre 0 et 15 'Vert" est compris entre 0 et 15 "Bleu" est compris entre 0 et 15

ùINKSRVB,numéroencre, Rouge, Vert, Bleu 

Fixer une des 15 encres des sprites avec une des 4096 couleurs choisie en fonction des composantes rouge, vert, bleu. 
"numéroencre" est compris entre 1 et 15 
"Rouge" est compris entre 0 et 15 "Vert" est compris entre 0 et 15 "Bleu" est compris entre 0 et 15

ùBORDERRVB,Rouge, Vert, Bleu 

Fixer la couleur du bore: avec une des 4096 couleurs choisie en fonction des composantes rouge, vert et bleu. 
"Rouge" est compris entre 0 et 15 'Vert" est compris entre 0 et 15 "Bleu" est compris entre 0 et 15

Voilà pour le descriptif des 6 nouvelles instructions du B-Asic. 
Je rappelle que vous devez taper le caractère (Sur le clavier, celui-ci apparaît comme un Ù à l'écran..) devant les nouvelles instructions, par exemple: ùBORDERP,567

UN EXEMPLE COLORE 

Pour mettre tout de suite en application l'une de vos nouvelles commandes, vous pouvez taper le programme de démo qui se trouve dans le coin. Il vous permet d'attribuer des couleurs différentes aux 16 encres disponibles sous le mode 0 (basse résolution) du CPC.

Déplacez simplement les « flêches-curseur » avec les touches flèches de votre pavé numérique puis incrémentez ou décrémentez les valeurs de rouge, vert et bleu avec les touches - et + de votre clavier. 
Libre à vous de vous amuser comme vous le souhaitez avec ces nouvelles commandes dans vos propres créations. Attention toutefois, celles-ci devront rester du domaine public puisque la séquence de codes utilisée pour exploiter les Plus de votre machine est sous copyright Amstrad.  

+---------------+----------------+---------------+------+ 
| FOND          |  SPRITES       | NUMERO ENCRE  | I/O  | 
+---------------+----------------+---------------+------+ 
| 6408-6401     |                | 0 TRANSPARENT | R/W  | 
| 6402-6403     |  6422-6423     | 1             | R/W  | 
| 6404-6405     |  6424-6425     | 2             | R/W  | 
| 6406-6407     |  6426-6427     | 3             | R/W  | 
| 6408-6409     |  6428-6429     | 4             | R/W  | 
| 640A-640B     |  642A-642B     | 5             | R/W  | 
| 640C-640D     |  642C-642D     | 6             | R/W  | 
| 640E-640F     |  642E-642F     | 7             | R/W  | 
| 6410-6411     |  6430-6431     | 8             | R/W  | 
| 6412-6413     |  6432-6433     | 9             | R/W  | 
| 6414-6415     |  6434-6435     | A (10)        | R/W  | 
| 6416-6417     |  6436-6437     | B (11)        | R/W  | 
| 6418-6419     |  6430-6439     | C (12)        | R/W  | 
| 641A-641B     |  643A-643B     | D (13)        | R/W  | 
| 641C-641D     |  643C-643D     | E (14)        | R/W  | 
| 641E-641F     |  643E-643F     | F (15)        | R/W  | 
| 6420-6421     |  BORDER        |               | R/W  | 
+---------------+----------------+---------------+------+

      +-----------------+     +-----------------+ 
      |      M S B      |     |      L S B      | 
      +-----------------+     +-----------------+ 
      | R R R R B B B B |     | x x x x V V V V | 
      +-----------------+     +-----------------+ 
        |ROUGE| | BLEU |                | VERT | 
        +-----+ +------+                +------+

Et bien sûr, nous seront ravis de recevoir des programmes ou des pages graphiques exploitant ces RSX. les réalisations originales seront publiées.

Une remarque encore... lorsque vous utilisez les nouvelles instructions relatives aux couleurs, il vous est possible de vous servir des anciennes commandes du Basic Amstrad (INK et BORDER).

Cependant, leurs utilisations auront pour effet immédiat d'annuler complètement la palette définie avec logonBasic et vous vous retrouverez instantanément avec l'ancienne palette. Mon conseil est donc: laissez tomber les vieilles instructions....

Voilà, répétons encore que vous pouvez désormais agrémenter vos jeux, programmes ou dessins de couleurs plus adaptées puisque le choix vous en est maintenant offert. Faites de beaux rêves... en 4096 couleurs !!!

LA REVUE TECHNIQUE

Je rappelle que cette partie est réservée à ceux qui veulent aller plus loin dans la programmation du Plus... Tout d'abord, abordons le principal problème rencontré par les nouvelles instructions couleurs: les perturbations du système avec les couleurs. En effet, le système gère habituellement le rafraîchissement des couleurs sous interruptions, ce qui est fâcheux lorsqu'on essaie une instruction d'entrée/sortie directe sur le Gate Array (via le OUT du Basic). le problème était donc le même avec l'Asic. Il s'agissait donc d'empêcher le système de remettre à jour le Gate Array avec ses tables de couleurs.

La solution était simple: déviation du système d'interruption existant pour permettre l'antidécrémentation du compteur système de flash des encres. Ainsi, à chaque VBL, le compteur est-il forcé à sa valeur maximale et ne peut donc, par conséquent, jamais atteindre 0 . Il suffisait d'y penser! 

Abordons maintenant les vecteurs I/O de l'Asic concernant les couleurs...

Il vous suffit juste pour affecter une encre (ou un registre de l'Asic), de connecter la page I/O (OUT &7F00,&B8), d'affecter les registres à modifier en pokant les valeurs aux adresses voulues, puis de déconnecter la page I/O (OUT &7F00, &A0. Je reviendrai sur la façon d'utiliser le registre RMR2 du Gate Array/Asic prochainement !).

Voilà, il ne nous reste qu'à vous souhaiter tout plein de rasters...colorés !

NEXT TIME

Le mois prochain, nous continuerons bien sûr sur notre lancée avec de nouvelles instructions du logonBasic. Nous verrons notamment comment exploiter les sprites hard de la machine. Avec la possibilité de déplacer 16 lutins sur votre écran, vous réaliserez des programmes intéressants sans aborder le problème complexe de la gestion de ces sprites. 

Logon System, Poum et Robby, ACPC n°38, page 28-29-30

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

★ AMSTRAD CPC ★ DOWNLOAD ★

Other platform tool:
» cpcplus38DATE: 2012-08-27
DL: 93 fois
TYPE: image
SIZE: 307Ko
NOTE: w612*h1576

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 48: En avant l'ASIC
» Coding » LOGON CPCPLUS 47: Les derniers mystères
» Coding Src's » Disassembly of AMSDOS ROM CPCplus
» Coding » LOGON CPCPLUS 44: Des Rasters sur CPC+
» Coding » CPCplus Menu

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 117 millisecondes et consultée 1354 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.