APPLICATIONSDIVERS ★ DU 464 AU 6128 (CPC REVUE) ★

du 464 au 6128 (CPC Revue)Applications Divers
Cet article est destiné à nos lecteurs qui possèdent un CPC 464 (avec drive DDI) et qui se demandent ce qu'ils auraient de plus avec un 6128 ; mais aussi à ceux qui ont un 6128 et qui aimeraient bien connaître les spécificités de leur appareil. Ce sera donc une analyse comparative sans aucun parti pris.

Le premier contact

Le bloc clavier est très différent : les touches sont toutes d'un gris uniforme et les "pavés" flèche et numérique ne sont plus séparés ; d'où un aspect tristounet et un peu confus. En revanche, la longueur est plus courte de cinq centimètres car un drive est plus étroit qu'un lecteur de cassettes. De même la hauteur est diminuée de 1,5 cm donc moins de fatigue dans les poignets. Le moniteur semble identique, en fait il renferme en plus l'alimentation 12 volts du drive ; donc celui-ci ne tiédira plus... Le manuel est deux fois plus épais et très solidement relié mais le contenu est hélas toujours aussi désordre. On trouve aussi une disquette supplémentaire pour le "CP/M PLUS".

En bref, c'est très nettement moins encombrant sur la table, surtout si vous avez le drive DDI avec ses câbles, et plus rapidement installé.
Côtés connecteurs : on trouve en outre un socle DIN pour la liaison avec un magnétophone extérieur.

Revenons au clavier. Plusieurs touches ont malheureusement changé de place : COPY, CTRL, le SHIFT de gauche, le "petit ENTER" et les flèches. Et comme tout est gris et jointif, les fautes de frappe vont bon train I Si vous "venez" du QWERTY ne cherchez plus les signes " " et "!" qui sont devenus "à" et "ù" ; rassurez-vous ce sont les mêmes codes ASCII donc ils auront les mêmes effets. Aucune touche nouvelle.

Voyons à présent les différences "internes", c'est-à-dire ces fameux 64 kilo octets en plus, le nouveau CP/M PLUS et surtout le BASIC complété.

LA MEMOIRE EN PLUS

Ces 64 Ko "auxiliaires" risquent fort de vous décevoir : ils constituent en fait une sorte de disque RAM où l'on peut quelquefois y caser certaines choses. C'est parfois pratique mais AMSTRAD aurait pu faire beaucoup mieux (comme par exemple pour les PCW).

Ce bloc de RAM supplémentaire est appelé le "BANK" ; en jargon informatique un BANK est un bloc de 64 Ko de RAM. Rappelons que les CPC (et PCW) utilisent un microprocesseur type Z80 qui a le défaut de ne pouvoir "adresser" que sur un bank, celui d'origine. Donc pour pouvoir utiliser les données mémorisées dans le bank n° 2, il faut d'abord qu'il les transfère dans le bank n° 1. L'est beaucoup plus rapide que s'il les prenait sur la disquette I
Alors concrètement que nous apporte ce bank n° 2 ?

  1. La possibilité d'y loger quatre "fichiers images" d'écrans de 16 Ko chacun. En une fraction de seconde, ils peuvent être chargés dans notre mémoire d'écran, c'est spectaculaire. Nous en reparlerons.
  2. Certains utilitaires du commerce savent utiliser ce bank ; exemple "DISCOLOGIE" qui en mode "copie" (je n'ai pas dis piratage !) charge 84 Ko d'un coup ! D'où des changements de disquettes "source/destination" beaucoup moins nombreux.
  3. Pouvoir stocker des données sous forme de "pseudo fichiers en accès direct". Ils ne seront pas effacés de cette RAM par un NEW ou un RUN et pourront donc être exploités par divers programmes successifs. Nous verrons plus foin que cette pratique est en fait lourde d'emploi et peu performante, c'est vraiment dommage !

LE CP/M PLUS

En supplément du classique CP/M 2.2 cette disquette nous apporte un "système" plus puissant certes mais avec le grave inconvénient suivant : une disquette formatée en CP/M PLUS sera illisible sur un CPC 464 (qui n'accepte que le CP/M 2.2), même avec un simple CAT ou DIR. D'autre part, il n'y a pas l'équivalent de FILECOPY (sauf grosses magouilles avec PIP) qui n'existe que sur le 2.2... Pas mal hein !

D'où cette conclusion qui n'engage que moi : sur 6128, utilisez le bon vieux CP/M 2.2 passe-partout, sauf si vous êtes un passionné de la bidouille sous CP/M, ce qui est assez rare...

Pour les besoins courants (FORMAT, DIR, COPIES) le 2.2 est bien plus rapide d'emploi que le CP/M PLUS. Je préfère le 2.2 livré avec le 464 que celui livré avec le 6128.

LE BANK MANAGER

Pour utiliser le bank n° 2, il faut tout d'abord lancer BANKMAN.BAS qui chargera BANKMAN.BIN. Ces deux programmes sont sur la disquette CP/M PLUS. Puis vous pourrez lancer vos programmes BASIC personnels.

Ce programme BANKMAN.BIN contient des routines genre RSX et de ce fait les commandes concernant ce bank sont des "mots" commençant par le signe "|". On les connaîtra vite car il n'y en a que six...

Suggestion : copiez ces deux programmes sur votre disquette de programmes personnels. BANKMAN.BAS est enregistré en "protégé” (eh oui!), éprotégez-le par un utilitaire du commerce, remplacez le END de la ligne 220 par un RETURN, ajoutez la ligne 5 bankman, puis RENAME 65000 et sauvegardez par SAVE"BANK". Joindre ce module par MERGE"BANK" à vos programmes qui commenceront bien sûr par GOSUB 65000.

LES APPELS D'ECRAN
(Voir listing n° 1)

Ce petit programme illustre les substitutions d'images d'écrans. Attention ! Il faut tout d'abord lancer BANKMAN car on va avoir besoin de ses RSX.

Notre scénario est simple : on trace un beau cercle à l'écran et on "sauvegarde" par :SCREENCOPY cette image dans le bank 2. On effectue cette manœuvre 4 fois et ce avec des rayons différents. On a donc stocké quatre fichiers images de 16 Ko chacun dans le bank 2 ; ils sont numérotés de 2 à 5. NOTA : le fichier image n° 1 est celui présent à l'écran.

Seconde phase d'utilisation : on rappelle ces fichiers à l'écran à tour de rôle, toujours par :SCREENCOPY mais dans le sens bank vers écran. C'est tellement rapide que cela fait une sorte d'animation.

Les DATA de la ligne 40 sont les divers rayons.

On dipose aussi de la commande :SCREENSWAP qui ressemble un peu à la prédédente, mais SWAP signifie échange entre l'écran (zone n° 1) et l'une des zones 2 à 5 du bank 2. Ainsi avec :SCREENSWAP, 1,3 ce qui était à l'écran passe en zone 3, et il apparaît ce qui se trouvait en zone 3.

LES FICHIERS EN ACCES DIRECT

C'est un bien grand mot car cela a très peu de rapport avec ce oui existe en ce domaine dans d'autres BASIC (ex. GW-BASIC des IBM PC).

En deux mots, disons d'abord en quoi consiste le "vrai accès direct".

Chaque "fiche" (il faut dire "enregistrement") a une longueur L fixée à l'avance, et elles sont mises bout à bout donc en un seul gros bloc. Si l'on veut lire la fiche n°123, ce segment de L octets est directement mis en RAM et ce sans avoir à lire les 1 22 précédentes (ce que l'on doit faire avec les fichiers "séquentiels" par OPENIN).

Même principe pour la sauvegarde : après modification du segment 123, celui-ci va reprendre sa place inititale en écrasant seulement son ancienne valeur, donc sans avoir à réécrire la totalité du fichier (comme avec OPENOUT).

Contrairement aux fichiers chargés en DIM, on peut donc exploiter un ficnier de taille gigantesque (généralement sur disquette) car en RAM il n'y a qu'une fiche à la fois de L octets...

Voyons à présent ce que nous livre le CPC 6128.

Primo, le fichier n'est pas sur la disquette mais UNIQUEMENT dans le bank 2, donc déjà limité à 64 Ko.

Secundo, pour le charger depuis la disquette ou pour le sauvegarder, il n'existe pas de commande spéciale. Il faut donc programmer des OPENIN et des OPENOUT car on ne dispose pour cela que du classique "séquentiel" I Et le gag ne s'arrête pos là...

Tertio, il n'est pas possible de transférer dans le bank 2 plus de 35 Ko environ, et voici pourquoi.

Pour charger des enregistrements A$ de longueur L la syntaxe est en gros la suivante :

WHILE NOT EOF
LINE INPUT #9, A$
R% = 0: |BANKWRITE, R%,A$
WEND

Supposons L= 100 octets et 350 enregistrements. La chaîne A$ va donc être redéfinie 350 fois à la longueur L ; on va donc consommer bêtement 350x 100 = 35000 octets de RAM sur les 42000 dont on dispose au départ. Autrement dit, la mémoire disponible, lisible par PRINT FRE(0) va chuter de 35000 octets rien aue pour charger le fichier I Aller au-delà conduirait au "garbage" (le FRE("") automatique qui provoque 30 minutes de blocage).

Et le gag ne s'arrête pas là...

Ce fichier enfin chargé en bank 2, on n'a plus assez de mémoire pour l'exploiter, alors on lancera un deuxième programme, par exemple RUN"EXPLOITE.BAS". Et là, autre surprise : avant de charger une fiche de longueur A$, il faut d'abord initialiser cet A$ par des blancs !

A$ = SPACES(L):R% = 0
|BANKREAD, R%,A$,123 (123= n° désiré)

et là encore bonjour le garbage ! N'exploitez pas trop...

Ah ! J'oubliais : il n'y a rien de prévu pour segmenter L en divers noms de variables (champs) ; c'est à vous de le faire à coups de MID$. Et le gag continue.

Il reste à sauvegarder votre travail, mais toujours en raison du risque de garbage il faudra lancer un RUN "SAUVE.BAS". Faisons le point. Il nous aura fallu lancer quatre programmes BASIC pour exploiter un fichier de 35 Ko : 1 BANKMAN.BAS (qui a lancé BANKMAN.BIN), 2 CHARGE.BAS, 3 EXPLOITE. BAS, 4 SAUVE.BAS. D'accord on aime bien rire, mais trouvez-vous cela sérieux ?

Le petit programme ACCEDIR (listing n° 2) illustre l'écriture de ce type de fichier AMSTRAD : création, lecture en demandant un numéro d'enregistrement et recherche en demandant les premiers caractères. Quelques explications :

  • BANKOPEN sert à fixer la longueur d'une fiche ;
  • R% est un "code de retour" (comme ERR en BASIC) ; égal à zéro si l'opération s'est bien passée. Il n'empêche qu'il faut l'initialiser chaque fois à zéro, sinon plantage ;
  • avant d'écrire une chaîne, il est prudent de la compléter à L avec des blancs ;
  • BANKFIND se contente des premiers caractères pour rechercher un enregistrement. R% est alors égal au numéro. Si pas trouvé R% est

Après tant de critiques, nous allons passer à quelques envois de fleurs. Ils concernent des nouveautés en BASIC. Personnellement, je pense que le BASIC du 6128 est le plus complet et le plus agréable du marché.

LES DEUX BUGS CORRIGES

Le BASIC du CPC 464 renferme deux bugs. C'est très peu pour un modèle de lancement (qui se souvient de ceux de l'Oric 1 ?). Ils avaient déjà été corrigés sur le fugace CPC 664.

Il s'agit surtout du MERGE et du CHAIN MERGE qui ne pouvaient charger que des programmes BASIC sauvegardés en ASCII. Un peu gênant pour le MERGE mais qui condamnait complètement le CHAIN MERGE (voir CPC n° 10 page 25), avec des temps de chargements en ASCII de l'ordre de trente secondes ! Rappel : CHAIN MERGE permet de développer des programmes énormes fragmentés en modules qui viennent à tour ae rôle se greffer à la suite d'un petit programme "programme-talon" qui lui est permanent. Les variables restent en RAM. Le logiciel peut totaliser 150 Ko sur la disquette, mais seulement les quelques kilo-octets dont a alors besoin sont chargés en mémoire.

L'autre mot BASIC débugué c'est DECS, qui est un STRS qui calibre un nombre en chaîne avec la même syntaxe et les mêmes avantages que PRINT USING. Exemple N$ = DEC$(N, "###.## "). A noter que ça marche sur 464 à condition de mettre deux parenthèses ouvertes au lieu d'une (le manuel du 464 ne parle pas de DEC$).

LES NOUVEAUTÉS BASIC

COPYCHR$ - Je commence par celle-ci car c'est ma préférée. Positionnée suite à un LOCATE, cette fonction lit le caractère qui se trouve là sur l'écran. Exemple, après un CLS vous avez "Ready" écrit en haut à gauche. Tapez au-dessous : FOR C= 1 TO 5:LOCATE C,1:X$ = X$ + COPYCHR$(#()):NEXT:PRINT X$
On a ainsi récupéré dans X$ le message "Ready". La syntaxe exige d'indiquer le numéro de "WINDOw", ici #0 par défaut. Après cette démo volontairement simplette, voici un programme qui est à la fois super utile et super court.
C'est une copie d'écran texte sur imprimante, avec comme application pratique un CAT imprimé que l'on pourra glisser dans le boîtier de chaque disquette. Voir listing n° 3 ("EDICAT"). A part quelques fioritures, vous constaterez qu'il se résume à CLS:CAT:GOSUB 25000. Cette fonction est une mine d'or !

DERR - Comble une lacune, c'est ERR pour les messages d'erreurs relatives à la disquette. Je m'explique : un programme bien fait doit être implantable suite à une fausse manœuvre de l'utilisateur (= autre que vous). Le ON ERROR GOTO avec ERR et ERL permettent d'éviter le naufrage surprise (voir CPC n° 9 page 14), mais ERR (= error reference) ne concerne que le BASIC "pur". Le répertoire de gaffes est élargi par DERR (= dise error reference). Imaginons la réaction d'un pauvre utilisateur qui lit "dise full" ou "file not found" avec un programme ainsi bien planté. Il ne connaît pas le GOTO salvateur et aimerait bien alors vous rencontrer dans un coin tranquille... D'où l'intérêt d'étendre la bouée de sauvetage ON ERROR GOTO aux erreurs sur disques.
Le programme FICHEXIST (listing n° 4) teste l'existence d'un fichier sur la disquette en lui faisant subir un simple OPENIN (ligne 50). En cas d'absence DERR = 146, le "flag" FEXIST est mis à 0 ligne 65010, puis RESUME sur la ligne CLOSEIN.
Au retour le flag est testé. Dans notre exemple, on prévient que ce nom de fichier existe déjà sinon on continue (on aurait aussi pu faire l'inverse). Quelques remarques :

  • Le RESUME NEXT de la ligne 65010 est aussi une nouveauté, il signifie RESUME sur la ligne suivant celle de l'erreur, ERL (ERL= error line) ;
  • Le ON ERROR GOTO ne supprime pas le message AMSDOS "File not found", d'où ce CLS ligne 90 suivi de notre message en français ;
  • Les erreurs type drive vide ou disquette non formatée n'ont pas de DERR correspondants. Ce n'est pas gênant puisqu'il n'y a pas plantage, mais l'opération "Retry".

CLEAR INPUT est une précaution qui vide le buffer clavier. Exemple : une opération longue (tri, etc.) fait croire à une anomalie, l'opérateur s'inquiète et tape quelque chose au clavier. Ces caractères n'apparaissent pas encore à l'écran mais sont mémorisés dans le buffer clavier. Quand le micro a terminé sa tâche, il les affiche ou pire il les exécute s'ils correspondent à des options pour des menus suivants ! Le désastre... Un CLEAR INPUT programmé à la fin du long travail évitera cet avatar.
Notons que sur 464, on obtient le même effet par CALL &BB03, mais le manuel ne le dit pas.

ON BREAK CONT rend inactif l'action sur ESC ; non pas pour "embêter le client" mais pour lui éviter une classique maladresse en tapant le chiffre 1... On le désactive par ON BREAK STOP. Voyons à présent les nouveautés en gra-p h i s m e .

FILL - Enfin ! Le remplissage en couleur d'une zone délimitée. Cela part de l'origine graphique (ORIGIN) à condition qu'elle ne soit pas sur un trait. On a vu plus rapide... Notre programme "DEMOFILL" (listing n° 5) sera plus parlant
qu'un long baratin. Ne vous étonnez pas ae ce GOSUB 54000 car il n'y a toujours pas CIRCLE.

FRAME évite une animation saccadée. Oui mais ça on savait déjà faire par CALL &BD19 ; c'est exactement la même chose mais c'est plus facile à retenir !

MASK, GRAPHICS PEN, GRAPHICS PAPER - On sait enfin faire des traits en pointillés : MASK définit "l'allongé" du pointillé, GRAPHICS PEN la couleur des tirets et GRAPHICS PAPER la couleur des "espaces" entre les tirets. Le nombre qui suit MASK constitue la forme du pointillé, car ce sera l'IMAGE BINAIRE répétée de ce nombre. Ainsi, MASK 240 conduira à des tirets de même longueur que les espaces, car 240 en binaire donne 11110000. Même effet avec 15 (00001 111) mais commencera par un espace.
On obtiendra un motif plus serré avec 204 (11001100) ou plus "discret" avec 224 (1 1100000). Quant à MASK 270 (10101010) il faut être en MODE 2 pour voir qu'il ne s'agit pas d'un trait continu...
Le programme "DEMOMASK" (listing n° 6) illustre ce genre de tracé.
Et les logiciels

DU COMMERCE !

Plusieurs jeux récents ne tournent que sur 6128, non pas à cause du "BASIC-EN-PLUS" mais parce qu'ils utilisent le bank 2. Soit pour y stocker des images ou des fragments d'images, tels certains jeux d'aventures avec graphismes élaborés, soit pour y loger des routines souvent appelées (certains tableurs).

En revanche, des logiciels prévus pour le 464 plantent immédiatement sur 6128, exemple le traitement de texte "TEXTOMAT". Pire encore, certains programmes qui tournaient sur les CPC 464, 664 et 6128 QWERTY ou uniquement sur ce dernier se plantent sur le 6128 AZERTY ! Donc soyez prudent et exigeant avant d'acheter un logiciel. Quoiqu'en disent certains vendeurs ou éditeurs de logiciels, le CPC 6128 n'est pas et ne peut pas devenir un micro "professionnel" et ce à cause de sa modeste mémoire. Ce n'est pas une critique, au contraire I On prend bien plus de PLAISIR avec un petit bijou de CPC qu'avec un micro professionnel. Autant comparer une voiture sport avec son petit coffre face à une fourgonnette de six mètres de long I Ce ne sont pas du tout les mêmes usages.

CPC

★ EDITEUR: CPC Revue
★ ANNÉE: 1988
★ CONFIG: 128K + AMSDOS + BANKMAN
★ LANGAGE:
★ LiCENCE: LISTING
★ AUTEUR: Michel ARCHAMBAULT
 

★ AMSTRAD CPC ★ DOWNLOAD ★

Type-in/Listing:
» Du  464  au  6128    (CPC  Revue)    LISTING    FRENCHDATE: 2021-02-02
DL: 159
TYPE: PDF
SiZE: 431Ko
NOTE: 6 pages/PDFlib v1.6

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

Lien(s):
» Applications » Pro-Kalender
» Applications » Astrologie Lunaire
» Applications » Multiscreen (Happy Computer)
» Applications » Wot (Amstrad Action)
» Applications » De-Dong
» Applications » Discbag III v2
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 319 millisecondes et consultée 882 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.