CODING ★ PROGRAMMATION INITIATION - Carte mémoire des CPC ★

Ali Gator - Les Fichiers Basic|Micro-Mag)

LES COURS DU PROFESSEUR ALI GATOR: Les fichiers BASIC

Au-delà de la définition des trois types de fichiers, Basic, binaires et ASCII, il serait bon de dégager quelques notions particulières. Contentons-nous aujourd'hui de Vétude des fichiers Basic.

I - Le Basic : un langage simple

Un bref rappel. Le Basic est un langage symbolique destiné à faciliter la programmation. L'ordinateur, lui, ne comprend que des codes binaires. C'est un programme appelé interpréteur Basic qui se charge de transformer nos ordres Basic en codes binaires exécutables par le CPC.

II - A chacun son Basic

A la différence des ordinateurs dits professionnels, les CPC possèdent un Basic résident, personnellement étudié et mis au point par Locomotive Software pour la société Amstrad. Ce Basic, comparé à ceux qui l'ont précédé, est l'un des plus rapides et des plus complets qui soit.

Des instructions comme WHILE, WEND, EVERY, etc., ont longtemps été l'apanage de langages informatiques considérés comme évolués. Ce Basic est si riche que les premiers manuels mis en vente avec les 464, omirent de mentionner certaines instructions. C'est ainsi que AND, NOT, XOR et MOD bien cités dans la liste des mots réservées ne bénéficiaient d'aucune explication les concernant. Les trois premiers sont des opérandes mathématiques bien connues dont l'effet est facilement déductible. Il n'en va pas de même pour MOD, abréviation de MODULO, qui en fait donne le reste d'une division. Pour ceux qui posséderaient un vieux manuel, voici la manière d'employer cette instruction. PRINT 16 MOD 3 Réponse : 1, car 16/3 = 5 et il reste 1.

III - Stockage d'un fichier Basic en Ram

Dans la Ram du CPC, le stockage du Basic commence à l'adresse 368 et selon les configurations, une quarantaine de ko sont à votre disposition. Toutefois, cela ne signifie pas que l'on peut écrire et faire tourner un programme Basic de 40 ko. Effectivement, la sauvegarde d'un fichier Basic ne tient compte que des lignes du listing. Les variables et autres tableaux DIM créés lors de l'exécution, ne sont pas compris dans la sauvegarde. Les lignes Basic s'empilent dans le bas de la mémoire, les variables alphanumériques dans le haut et les autres variables entre tout cela. Lorsque les extrémités se rejoignent, l'ordinateur vous le signale par un MEMORY FULL. Autre chose. De trop nombreuses modifications de variables alphanumériques entraînent la création de déchets. Lorsqu'il y en a trop, l'ordinateur fait le ménage durant un laps de temps plus ou moins long où vous n'avez plus accès au clavier. Ce phénomène temporaire s'appelle le garbage et le problème est inhérent à tous les Basic. Il est donc intéressant, lors de la mise au point d'un programme, de se renseigner à intervalles réguliers sur la place restant disponible par la commande FRE (0) ou FRE (" "). La deuxième instruction forçant le CPC à faire le ménage avant de vous répondre.

IV - Cohabitation Basic/binaire

Dans cette Ram peuvent coexister des fichiers Basic et des fichiers binaires, à condition que ces derniers soient dans l'impossibilité d'être recouverts par du Basic. D'où la nécessité de la commande MEMORY qui interdit, telle une barrière, l'empiétement du Basic sur le binaire. Un autre impératif ; les commandes SYMBOL et SYMBOL AFTER doivent être exécutées avant le MEMORY sous peine de provoquer un splendide IMPROPER ARGUMENT. Ce phénomène se produit également lors d'un deuxième RUN, nous verrons prochainement comment y remédier.

Néanmoins, une possibilité est offerte dans l'éventualité d'une routine très courte. Son stockage avant le début du Basic. Sachant qu'un fichier Basic débute à l'adresse 378 avec en dessous les vecteurs de RES-TART, quelques octets restent cependant disponibles. La récréation du mois dernier utilisait cet espace pour deux petites routines de recopie d'écran. La commande MEMORY s'avère dans ce cas inutile.

V - Organisation en Ram d'une ligne Basic

Votre CPC ne comprend que des codes binaires. Donc, lorsque vous écrivez

1 PRINT "MICRO MAG c'est super"

c'est le système d'exploitation et l'interpréteur Basic qui transforment ce message publicitaire en octets de différentes valeurs. Cette ligne occupe 30 octets dans la Ram et se situe (puisque c'est la première) entre les adresses 368 à 397. Voici la boucle permettant d'obtenir la valeur de ces 30 octets.

FOR H = 368 TO 397: A = PEEK(H) : PRINT A ; : NEXT

Les deux premiers octets contiennent la longueur de la ligne. En fait, puisqu'une ligne Basic ne peut dépasser 255 caractères, le codage de ce nombre sur un seul octet suffirait. Mais pour sa petite cuisine interne, l'interpréteur en utilise deux. Les deux suivants donnent le numéro de ligne que l'on peut exprimer de la sorte : (valeur octet n° 3) + 256 * (valeur octet n° 4) = numéro de ligne. Les mots Basic quant à eux sont remplacés par une ou deux valeurs Ascii qui leur sont propre et que l'on appelle des Tokens. Outre les mots Basic, les signes relatifs aux différentes opérations mathématiques possèdent eux aussi leur Token. Ces fameux Tokens se reconnaissent à leur valeur toujours supérieure à 128. Ici, le Token de PRINT est 191. Le reste de la ligne « ; » guillemets, espaces et texte sont représentés en Ram par leur valeur ASCII (une valeur pour chaque caractère). La fin d'une ligne Basic est signalée par un octet à zéro, appelé code de séparation. L'exemple ci- dessus est le plus simple. Les choses se compliquent lorsque la ligne Basic contient des variables. Différents types de codages sont alors employés par l'interpréteur pour signaler le genre de variables (numérique, entière, alphanumérique, etc.). Tout ceci est très complexe et d'un intérêt limité.

VI - Quelques petits trucs

Pour en finir avec les fichiers Basic, voici en vrac quelques petits trucs les concernant. Notre ligne exemple n° 1 peut être transformée en ligne zéro par un POKE 370, 0. De la sorte, elle restera active mais n'apparaîtra pas lors d'un LIST. Avec POKE 369, 30 vous obtenez l'effet inverse. Seule la première ligne peut être listée, le reste du programme n'apparaît pas. Dans le cas d'un fichier Basic protégé par erreur (sic), faites [INCOMPLET?]

MICROMAG n°6

★ EDITEUR: MICROMAG
★ ANNÉE: 1989
★ AUTEUR: CLAUDE LE MOULLEC

Cliquez sur l'image pour voir les différents packages (2). 

Page précédente : Ali Gator - 04 La mémoire écran (Micro-Mag)

CPCrulez[Content Management System] v8.7-desktop/cache
Page créée en 131 millisecondes et consultée 642 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.