CODING ★ LOGON CPCPLUS 42: LE B-ASIC NOUVEAU EST ARRIVÉ ★

RSX B-AsicLOGON CPCPLUS 42: Le B-ASIC nouveau est arrivé
Promis C'est la dernière fois que vous aurez à vous farcir ces tonnes de data. Mais en bout de course, la classe!

Cette nouvelle version (la v1.4 du B-Asic) se charge directement dans les banks de vos CPC 6128+. Cela veut dire qu'il vous est désormais possible de remplir votre mémoire avec des programme sans crainte d'empiéter sur les codes machines du B-Asic. Nous avons également trouvé quelques mini bugs qui sont évidemment complètement revus dans cette dernière version.

Vous trouverez ci-joint trois documents. Le premier est, bien sûr, les data qui généreront un nouveau fichier du nom de « B-ASIC.COD ».

Le second est un exemple déjà vu qui vous montre comment mouvoir les sprites de votre Plus.
Enfin, le dernier document servira à régler les couleurs d'encre ainsi que celles des sprites.
Pour cela, lancer le programme (sur la disquette doit figurer le fichier « BASIC.COD ».
Vous pouvez charger une image écran de 17 Ko si vous répondez Oui à la première question. Le reste est fort simple. Déplacez le curseur à l'aide des quatre flèches du pavé de votre ordinateur. Pour régler le rouge, utilisez les touches 7 et 9 du pavé numérique. De même, le réglage du vert se fera avec les touches 4 et 5 tout comme les touches 1 et 3 qui régleront le bleu.

Si vous avez chargé un écran, appuyez sur la touche COPY pour le voir dans ces nouvelles couleurs. En appuyant sur la barre ESPACE, vous vous replacerez dans le menu des couleurs.
En appuyant sur la touche V de votre ordinateur, vous ferez disparaître les vumètres RVB. Cela a pour conséquence d'accélérer le déroulement du programme.

Enfin, en appuyant sur la touche TAB, le programme générera un fichier Basic du nom de « -ACPC.BAS » qu'il suffit de lancer pour rétablir les couleurs choisies.

N'oubliez pas. Avant d'utiliser le BASIC, insérez toujours la ligne LOADER (voir les exemples).
Il ne vous reste plus qu'à vous éclater comme des petits fous et réaliser des jeux et utilitaires dignes de ce nom sur nos chères machines. Avant de vous quitter, voici la récap' de toutes les instructions du B-ASIC.

LES COMMANDES DU B-ASIC V1.4

ùINKF ,numéroencre,couleur

  • Permet de fixer une des 16 encres de fond avec une des 4096 couleurs.
    « Numéroencre » est compris entré 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.

    NB : l'encre 0 des sprites est 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 4 096 couleur's choisies 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 choisies 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,Bteu

  • Fixer la couleur du bord avec une des 4096 couleurs choisies 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

ùSPRON,n

  • Affiche le sprite n (de 0 à 15).

ùSPROFF,n

  • Efface le sprite n (de 0 à 15).

ùSPRZOOM,n,x,y

  • Zoome le sprite n en x et y (de 1 à 3). Valeur 0 en x ou/et y, efface le sprite.
    Voilà de quoi afficher un sprite dans des résolutions équivalentes aux trois modes graphiques du CPC et ce indépendamment du mode écran en cours. Cela permet d'afficher des sprites mode 2 sur une page écran en mode 0.

ùSPRXY,n,x,y

  • Affiche le sprite n aux coordonnées x et y. Les valeurs pour x vont de -256 à 767 et de -256 à 255 pour y.
    Un sprite pourra donc se balader hors de l'écran comme s'il était toujours affiché.
  • Avec le bord d'écran tel qu'il existe lorsqu'on allume la maçhine, un sprite reste toujours visible à l'écran avec des valeurs de -64 à 640 pour x et -64 à 200 pour y.

ùSPRTDEF,n,adr,time

  • Définit le parcours d'un sprite sur l'écran pendant un temps défini.
    Les coordonnées graphiques que devra suivre le sprite n doivent être pokées en mémoire à partir de l'adresse adr que vous définirez.
    Placez l'octet de poids faible avant l'octet de poids fort; enfin, les deux derniers octets de votre liste doivent être FO pour signifier la fin de la liste.
    Si time est égal à 0, le sprite continue son parcours à l'infini.
    Pour une meilleure compréhension, voyez l'exemple de la fonction que nous avons utilisée dans notre programme Basic.

ùSPRTON,n [,n2,n3,...]

  • Le sprite n commence le parcours qui lui a été défini par ùSPRTDEF. Vous pouvez également commander d'autres sprites (n2,n3, etc.)

ùSPRTOFF,n [,n2,n3,...]

  • Une unité de temps représente 0,02 secondes!
  • Le sprite n arrête son parcours. Vous secondes... 50 représente donc 1 ,pouvez également commander d'autres sprites (n2,n3,...)

ùSPRSWAP,n1,n2

  • Echange le contenu de deux sprites.

ùSPRPLOT,n,x,y,c

  • Affiche la couleur c aux coordonnées x et y du sprite n.
  • valeur pour c : de 0 à 15 (0 étant la couleur transparente).
  • Valeur pour x et y : de 0 à 15.
  • Voilà qui va vous permettre, entre autres, de vous créer un petit éditeur de sprite, puisque ce RSX permet d'adresser un point à "intérieur du sprite n.

ùSPRCOPY,n1,n2

  • Recopie exactement le contenu du sprite n1 dans le sprite n2.

ùSPRTURNX,n

  • Fait pivoter à 180 degrés le sprite n dans son axe x.

ùSPRTURNY,n

  • Fait pivoter à 180 degrés le sprite n dans son axe y.

ùSPRFILL,n,c

  • Remplit le sprite n avec la couleur c.
  • Valeur pour c: de 0 à 15.

ùSPRTDEF,numéro sprite,adresse liste,temps,délai début

  • SPRTDEF permet d'affecter un chemin à un sprite. Le chemin est défini par des coordonnées x, y que vous aurez pris soin de rentrer en mémoire à partir d'une adresse libre. Par exemple en #8000, en prenant comme précaution de protéger cet espace mémoire par un MEMORY #7FFF (pour l'exemple...). La table en mémoire est donc composée de valeurs x et y, chacune codé sur 16 bits, soient 2 octets pour X et 2 octets pour Y. L'octet de poids faible est placé, comme il est de coutume sur le Z80A, en deuxième position, après l'octet de poids fort. Une position occupera en mémoire 4 octets Le parcours du sprite est donc défini avec des séries de coordonnées occupant 4 octets chacune. La fin de table est marquée par une valeur X de F0F0. Il faut considérer le parcours comme étant cyclique, c'est-à-dire qu'il y a bouclage sur le début de la table lorsque la dernière coordonnée été lue... Le 3e paramètre permet d'indiquer pendant combien de temps le sprite va effectuer le parcours... Et enfin, le dernier paramètre permet de définir le délai avant que le sprite commence à effectuer son parcours... Au bout de ce délai, le sprite est automatiquement mis actif (SPRON) et commence son trajet...

    SPRTDEF ne fait pas démarrer immédiatement le sprite, mais définit àl'avance un chemin pour celui-ci. Le démarrage du parcours est conditionné par l'instruction SPRTON.

    A noter: il est évidemment possible de définir le même chemin pour des sprites différents.

ùSPRTON,num1 [,num2,num3,...,num15]

ùSPRTOFF,num1 Lnum2,num3,..,num15]

  • Acceptent des listes variables de sprites, ce qui permet d'activer simultanément certains sprites.
    Dans cette optique, il est ainsi possible de définir le temps de démarrage de chaque sprite très précisément (et à l'avance), puisque les paramètres de SPRTDEF ne sont pris en compte que lors du SPRTON.

ùSPRTORAM,NumSprite,NumSpriteRam

ùRAMTOSPR,NumSpriteRam,NumSprite

  • Voici des instructions vous permettant d'avoir accès à votre banque personnelle de sprites. En effet, luxe suprême, vous disposez d'une banque de sauvegarde en mémoire de 64 sprites. Cette mémoire n'empiète pas sur la Ram du B-Asic mais se trouve dans les banques supplémentaires. (Eh oui, dommage! Mais les 464 Plus ne pourront se servir de ces deux instructions).

    SPRTORAM permet le transfert d'un sprite vers la banque-sprite.

    RAMTOSPR permet le transfert de la banque-sprite vers un sprite. NUMSPRITE varie entre 0 et 15. NUMSPRITERAM varie entre 0 et 63.

ùSPRSAVE,[NumSprite,J NumBlok, Filename

ùSPRLOAD,[NumSprite,] Numblok, Filename

  • Vous pouvez sauvegarder et recharger vos sprites. Tous les paramètres entourés de crochets sont facultatifs. Qu'estce que NumBlok ? Ce paramètre est compris entre 0 et 4.
  • NumBlok = 0 ==> Sprites 00 à 15 de l'Asie
  • NumBlok = 1 ==> Sprites 00 à 15 de la Banque-Sprite.
  • NumBlok = 2 ==> Sprites 16 à 31 de la Banque-Sprite.
  • NumBlok = 3 ==> Sprites 32 à 47 de la Banque-Sprite.
  • NumBlok = 4 ==> Sprites 48 à 63 de la Banque-Sprite.

    NumSprite est omis: tout le bloc est pris en compte et 16 sprites sont chargés ou sauvés.

    NumSprite est précisé: seul un sprite de la banque choisie est pris en compte. A noter: le chargement avec NumBlok=O a pour conséquence une modification en temps réel du ou des sprites chargés.

    Et enfin Filename, qui est le nom du fichier sprite, et qui est entre doublecôtes ou dans une variable.

    Exemples:

    ùSPRSAVE,0,"sprites" : sauvegarder tous les sprites de l'Asie. ùSPRLOAD,2,5,"unsprite" : charger le sprite 5 de la banque 2. (ùRAMTOSPR,21,0 permettra de transférer le sprite 5 de la banque 2 vers le sprite 0 de l'ASIC)

ùRETARDX,DécalageX ùRETARDY,DécalageY

  • Le retard permet de générer un« retard » lors de l'affichage de l'écran vidéo. Cela est fort pratique lorsqu'il s'agit de réaliser des scrolls très lents mais néammoins très fluides sans avoir la moindre opération de décalage à effectuer.

    DécalageX varie de 0 à 15. DécalageY varie de 0 à 7.

    Vous avez sans doute remarqué que l'écrçln se déplace pixel par pixel.

ùMASQUE,FlagMasque

  • Pour les petits malins qui viennent de dire à l'instant, en testant ùRETARDX : « Tiens, y'a des cochonneries à gauche de l'écran! » , l'instruction ùMasque permet d'éliminer ces « cochonneries ».
    FlagMasque prend donc 2 valeurs: 1 pour avoir un masque et 0 pour ne pas en avoir.

ùSPLlT,NuméroLigne, Adresse

  • Vous vous souvenez des articles affreux que j'avais osé écrire sur la rupture... POSSeSseurs de CPC Plus: oubliez tout!

    La rupture facile est arrivée.

    1/ suffit juste de préciser le numéro de la ligne et l'adresse désirée. Ainsi, ùSPLlT,100,&8400, mettra l'adresse &8400 à la ligne 100.

    Facile, non?

    Pour désactiver le SPLIT, il suffit juste de mettre la valeur du numéro de ligne à 0. L'adresse devra être comprise entre 0000 et FFFF, ce qui, à mon avis, laisse le choix.

    Un denier détail. Comme vous le constatez dans l'exemple Basic (qui se trouve quelque part dans ces pages), la ligne LOADER à été modifiée. Désormais, le B-Asic se charge dans les banques, ce qui le rendra complètement transparent. C'est ça, également, la Classe Logon.

    Voici la ligne à insérer au début de tout vos programmes:

    10 IF PEEK(&BD0E)<>&CD THEN OUT &7F00,&C1:LOAD "B-ASIC.COD",&C000:CALL &C2B5

Longshot. Logon System, ACPC n°42 page 42-43--44

★ ANNÉE: 1992
★ AUTEUR: LONGSHOT
★ INFO: Download la derniere version B-ASIC

 

Page précédente : LOGON CPCPLUS 41: Programmation de l'ASIC
★ AMSTRAD CPC ★ DOWNLOAD ★

File:
» B-Asic  v1.4DATE: 2002-12-05
DL: 544
TYPE: ZIP
SiZE: 7Ko
NOTE: 40 Cyls
.HFE: Χ

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

Lien(s):
» Coding » LOGON CPCPLUS 45: Le CPC plus en musique
» Coding Src's » Disassembly of AMSDOS ROM CPCplus
» Coding » Chronique A100% CPC+ (Logon System)
» Coding » LOGON CPCPLUS 39: Exploitez les sprites de votre CPC Plus
» Coding » Cours CPC Plus par AST / IMPACT
» Coding » LOGON CPCPLUS 47: Les derniers mystères
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 609 millisecondes et consultée 2322 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.