CODINGAMSTRAD CPC 464 - CRÉER DE NOUVELLES INSTRUCTIONS

Nouvelles Instructions 001

AVANT-PROPOS

L'Amstrad CPC est équipé d'un processeur Z 80, fonctionnant à 4 mégahertz et disposant d'un jeu d'instructions extrêmement puissant. En outre, la qualité de son BASIC, tant du point de vue de la vitesse que du nombre d'instructions, range cette machine parmi les plus performantes du marché.

Il n'en reste pas moins que le BASIC sera toujours le BASIC, avec ses inconvénients et ses limites. Qui, par exemple, n'a pas éprouvé d'amères déceptions en voyant un mobile se traîner sur l'écran, avec force soubresauts, au terme d'un programme d'animation en BASIC. De plus, on ne peut que regretter l'absence, sur l'Amstrad, d'instructions telles que PAINT, CIRCLE, etc.
Le langage machine peut remédier à ces défauts.
Lorsque vous travaillez en BASIC sur votre ordinateur, c'est un peu comme si vous teniez une conversation avec, disons, un Anglais, par traducteur interposé. En effet, le processeur n'a pas la moindre idée de ce que signifient des choses telles que PRINT, LOCATE ou GOTO. Et pourtant, ça marche ! Alors ?
Alors il y a effectivement, quelque part dans la machine, un programme intégré qui traduit les instructions BASIC en langage machine, le seul compris par le Z 80.
On voit donc tout de suite l'intérêt qu'il peut y avoir à travailler directement en langage machine: pour reprendre l'exemple cité plus haut, votre conversation sera bien plus efficace et rapide si vous vous exprimez directement en anglais plutôt que de passer par un interprète.
A titre d'exemple, voici deux versions, l'une en BASIC et l'autre en langage machine, d'un même programme qui colore l'écran. Ne cherchez pas à comprendre ce programme pour l'instant.

Programme BASIC

10 X = 255
20 MODE 1 : FOR I = 49152 TO 65535
30 P0KE I,X : NEXT

Vous pouvez faire varier la couleur en affectant à X, en ligne 10, une valeur quelconque de 0 à 255.

Programme en langage machine

10 MODE 1 : MEMORY 40000 :X = 255
20 FOR I = 40001 TO 40016 : READ a : POKE I,a : NEXT
30 POKE 40008,X : CALL 40001
40 DATA &21, &0, &40, &11, &FF, &BF, &3E, &0, &13, &12, &2B, &7C, &B5, &20, &F7, &C9

Là encore, vous pouvez faire varier la valeur de X entre 0 et 255. Pour la même tâche, on peut constater que le programme BASIC met environ 36 secondes, alors que le même en langage machine met un peu plus de deux dixièmes de seconde !
Cette vitesse d'exécution va naturellement nous permettre des réalisations qui seraient impossibles en BASIC.
Il n'est bien entendu pas question pour nous de remplacer totalement le BASIC et d'écrire de gigantesques programmes en langage machine, mais simplement d'apprendre à construire des petites routines (ou sous-programmes) que nous utiliserons comme s'il s'agissait d'instructions nouvelles.

S'il est vrai que le langage machine est beaucoup moins tolérant que le BASIC en ce qui concerne les erreurs, et en dépit de son aspect quelque peu rébarbatif pour le profane, vous vous rendez vite compte que le premier n'est pas beaucoup plus difficile à travailler que le second.

Par ailleurs, et contrairement à ce que pourraient laisser croire un certain nombre d'ouvrages s'étendant avec complaisance sur le sujet, aucune connaissance particulière de l'arithmétique binaire, ou hexadécimale n'est nécessaire (à moins, bien sûr, de vouloir devenir un spécialiste).

Le BASIC de l'Amstrad nous offre en effet deux précieuses fonctions capables d'effectuer pour nous toutes les conversions nécessaires : il s'agit des fonctions HEX$ et BIN$, dont nous reparlerons.

Tout au plus, concernant l'hexadécimal, vous faudra-t-il apprendre à distinguer un octet fort d'un octet faible.
Ce problème est abordé dans la Première Partie, consacrée aux connaissances de base minimales à acquérir avant d'aborder la programmation proprement dite.

★ ANNÉE: ???
★ AUTEUR: JEAN-CLAUDE DESPOINE

Page précédente : AMSTRAD CPC 464 - Créer de Nouvelles Instructions
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
Page créée en 119 millisecondes et consultée 1090 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.