CODINGBUG ★ BASIC★ $ ★

664 Vous avez dit « compatibles » ? (MICROSTRAD)

Ce qu'il faut savoir pour adapter, au CPC 464, des proqrammes écrits sur CPC 664.

La compatibilité entre les deux premiers modèles de CPC - 464 et 664 - est toute relative, tant pour les applications pointues (ne serait-ce qu'à cause d'une limite mémoire, himem, fixée à &A67B sur le 664 et à &AB7F sur le 464), que pour les programmes Basic, puisque le vocabulaire du 664 est un peu plus étendu que celui de son petit frère.

Pour vous aider à adapter, sur votre 464, des programmes écrits pour le 664, nous allons passer en revue les mots clés spécifiques du Basic 664. Nous tairons les commandes destinées aux disquettes, puisque ce périphérique n'est pas commun aux deux machines. De plus, cette exploration sera l'occasion d'apporter un correctif aux oublis du manuel du 464 ( car il y en a ! ).

— CLEAR INPUT : vide le buffer clavier de son contenu. Sur le 464, un effet semblable s'obtient avec CALL &BB03, ce qui a l'inconvénient de détruire les key def existants. Nul n'est parfait !

— COPYCHR$ : recopie un caractère pris sur l'écran sur un autre canal. On peut essayer d'imiter cette fonction en jonglant avec des fenêtres et des win-dowswap. Solution bien compliquée...

— CURSOR$ : force l'allumage et l'extinction du curseur texte, chr$ (2) et chr$ (3) sont des codes de contrôle qui peuvent, dans une certaine mesure, avoir un effet analogue. Par exemple, pour faire disparaître le curseur lors d'un input, vous pouvez essayer : 10 print chr$ (2);: input a. Cette commande étant destinée à améliorer la présentation sur l'écran, vous pourrez tout simplement l'ignorer.

— DEC$ : sert au formatage d'expressions numériques. Cette même fonction existe sur le 464, bien qu'elle ne figure pas dans le manuel. La raison de cette absence est une bogue dans sa syntaxe. Pour la faire fonctionner, il suffira de mettre deux parenthèses ouvrantes et une fermante. Exemple : print

— DERR : c'est une fonction disquette, n'en parlons pas...

— DRAW, DRAWR, MOVE, MOVER, PLOT, PLOTR : acceptent un paramètre supplémentaire pour le mode d'encre. Sur le 464, vous pouvez faire précéder la commande graphique d'un print CHR$ (30); CHR$ (23) ; CHR$ (X)... formule dans laquelle vous remplacerez le x par le paramètre supplémentaire (qui peut varier entre 0 et 3).

— FILL : commande de remplissage de zone sur l'écran. Difficile à imiter en Basic, pour cause de
lenteur. La routine FILL que nous vous proposons, vous apportera de quoi pallier cette absence regrettable.

— FRAME : améliore la représentation des graphismes mobiles. Aucun problème sur le 464 : vous remplacerez cette commande par call &bd19.

— GRAPHICS PAPER : définit une couleur de fond pour la fenêtre graphique. Difficile à imiter : le plus expéditif sera de délimiter une fenêtre texte de même taille que la fenêtre graphique, puis d'utiliser paper pour colorier cette zone.

— GRAPHICS PEN : détermine la couleur des tracés graphiques, en même temps que le mode de fond (transparent ou opaque). Un print CHR$(30); chr$ (22) ; chr$ (X), dans lequel x sera remplacé par 0 - opaque - ou 1 - transparent -, peut éventuelle ment faire l'affaire. C'est quand même moins convaincant.

— MASK : sert à tracer des lignes graphiques en pointillés selon un format choisi. Solution expéditive pour le 464 ; ne tenez pas compte de cette commande, vous aurez des lignes continues...

— MOD : opérateur arithmétique qui rend le reste de la division entière de ses deux arguments. Par exemple print 10 mod 3 rend 1 pour résultat. Aucun problème sur le 464 : cette fonction existe aussi, bien que le manuel n'en parle pas. Oubli regrettable!

— ON BREAK CONT : sert à neutraliser la touche ESC. Vous remplacerez cette commande par ON break gosub xxx ; en plaçant en ligne xxx un simple RETURN.

Comme vous pouvez le voir, les solutions de remplacement ne sont pas toujours évidentes à mettre en œuvre, quand elles existent ... La preuve, ce petit programme imitateur de fill, qui a quelques inconvénients. Vous pourrez le compléter pour éliminer les trous qu'il lui arrive de laisser dans certains cas de figure. Sans compter qu'il est rapide... comme un escargot !

10 REM ********* ROUTINE FILL ********
20 REM *********** CPC 464 ************
30 MODE 1
40 FOR 1 = 1 TO 20:MOVE 640*RND(10), 400*RN
D(10)*DRAW 640*RND(10),400*RND(10):NEXT
50 MOVE 300.200
60 C=1:REM COULEUR DU BORD DE LA FIGURE A REMPLIR
70 GOSUB 1000: REM APPEL DU S/P FILL
80 END
90 REM
100 REM
1000 REM **** SOUS/PROGRAMME FILL ***•
1010 MOVE 2*INT(XPOS/2),2*INT(YPOS/2)
1020 IF TESTR(0,0)=C THEN RETURN
1030 YP=YPOS : XP=XPOS :XG=XP
1040 REM ====== VERS LE HAUT ======
1050 GOSUB 1210:REM +++ LIMITE GAUCHE
1060 GOSUB 1240:REM +++ LIMITE DROITE
1070 DRAWR XG-XD,0
1080 MOVER XD-XG, 2 :REM LIGNE SUP
1090 WHILE TESTR(-2,0)=C AND XD > XG:XD=XPOS:WEND
1100 IF XD > XG THEN 1050
1110 REM ====== VERS LE BAS ======
1120 MOVE XP,YP-2
1130 GDSUB 1210 : REM +++ LIMITE GAUCHE
1140 GOSUB 1240 : REM +++ LIMITE DROITE
1150 DRAWR XG-XD,0
1160 MOVER XD-XG,-2 : REM LIGNE INF
1170 WHILE TESTR(-2,0)=C AND XD > XG :XD=XPOS:WEND
1180 IF XD > XG THEN 1130
1190 RETURN
1200 '-----------------------------------------
1210 REM +++++ LIMITE GAUCHE
1220 WHILE TESTR(-2,0) < > C AND XPOS > 0:WEND:XG=XPOS+2
1230 RETURN
1240 REM +++ LIMITE DROITE
1250 WHILE TESTR(2,0) < > C AND XPOS < 640:WEND:XD=XPDS
1260 RETURN

Microstrad n°2 , nov/dec 1985

★ REVUE: MICROSTRAD
★ ANNÉES: 1985
★ AUTEUR: JEAN-PIERRE LALEVÉE

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

Lien(s):
» Coding » Bas - les Touches Pour Faineants (CPC Revue)
» Coding » Essai Compilateur Basic
» Coding » Reduction du Code Basic (Amstar&CPC)
» Coding » A bug in the CPC464 (Computing with the Amstrad)
» Coding » Comment retrouver une erreur dans une ligne de Datas
» Coding » Basic - Table de References Croisees des Variables Basic (CPC Revue)
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/c
Page créée en 446 millisecondes et consultée 1673 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.