CODINGCLASSEURS WEKA ★ Comment exploiter toutes les ressources et augmenter les performances de votre AMSTRAD CPC ★

5/10.1 Programme de dessinCoding Classeurs Weka
5/10.1 Programme de dessin

Ce programme permet de créer d'une façon tout à fait conventionnelle des dessins en MODE 1 en utilisant la technique du TÉLÉCRAN.

Après avoir choisi les couleurs utilisées dans le dessin, les touches-flèches permettent de déplacer le curseur. Pour dessiner avec la couleur n, il suffit d'appuyer simultanément sur SHIFT et n. Pour obtenir la fonction « gomme », il faut appuyer simultanément sur SHIFT et 0 (car 0 est la couleur de fond).

Quand le dessin est terminé, appuyez sur la touche « ENTER » et répondez « 0 » (Oui) à la question « Sauvegarde magnétique ? ». Si vous possédez un 464 sans lecteur de disquettes, armez-vous de patience car l'écran occupe 16 KO (Kilo Octets) et prend (16/2+1) 9 blocs. Vous pouvez accélérer les choses en précisant « SPEED WRITE 1 » avant de lancer l'exécution du programme.
Une fois la sauvegarde effectuée, vous pouvez poursuivre votre travail en reprenant les choses au point où elles en étaient en répondant « 0 » (Oui) à la question « Poursuite ? ».

Le listing du programme BASIC est le suivant :

1000 REM *********************
1001 REM Trace point: par point
1002 REM *********************
1010 '
1020 ' Prog. ASM Sauvegarde et affichage écran
1030 '
1040 FOR I=0 TO &17:READ A:P0KE &3000+I, A : NEXT I
1050 DATA &21 , 0, &CD, &11,0, &40, 1 , &FF, &3F, &ED, &B0, &C9
1060 DATA &21,0,&40,&11,0,&CO, 1 , &FF, &3F, &ED, &BO, &C9
1070 '
1030 ' Initialisation
1090 '
1100 STYLO=0 'Stylo leve
1110 BORDER 0:INK 0,0: INK 1,10:X=0:Y=0
1l20 MODE 1
1130 INPUT"Affichage monochrome (0/N)";R$:R$=UPPER$(R$)
1140 IF R$<>"O" AND R$<>"N" THEN 1120
1150 IF R$="0" THEN NBC0UL=1 ELSE NBC0UL=3
1160 PRINT
1170 FOR I=0 TO NBCOUL
11B0 PRINT"INK"; I;" : (0 A 26) ";:INPUT A:INK I,A
1190 NEXT I
1200 PRINT :INPUT"Chargement d'un écran (0/N) ";R$:R$=UPPER$(R$)
1210 IF R$ = "0" AND R$<>"N" THEN 1200
1220 IF R$="0" THEN PRINT:INPUT"Nom de l'écran ";ECR*:L0AD ECR$,&CO0O: GOTO 1240
1230 CLS
1240 PLOT X,Y,Z
1250 '
1260 '
1270 '
1280 A$=INKEY$:IF A$="" THEN 1280 'Attente action
1290 A=ASC(A$)
1300 IF A=55 THEN PLOT X,Y,STYLO:Y=Y+2:X-X-2 :G0T0 1240 'En haut a gauche
1310 IF A=57 THEN PLOT X,Y,STYLO:Y=Y+2:X=X+2 :G0T0 1240 ' En haut a droite
1320 IF A=49 THEN PLOT X,Y,STYLO:Y=Y-2:X=X-2 :GOTO 1240 'En bas a gauche
1330 IF A=51 THEN PLOT X,Y,STYLO:Y=Y-2:X=X+2 :G0T0 1240 'En bas a droite
1340 IF A=56 THEN PLOT X,Y,STYLO:Y=Y+2:GOTO 1240 'Vers le haut
1350 IF A=50 THEN PLOT X,Y,STYLO:Y=Y-2:GOTO 1240 'Vers le bas
1360 IF A-52 THEN PLOT X,Y,STYLO:X=X-2:GOTO 1240 'Vers la gauche
1370 IF A=54 THEN PLOT X,Y,STYLO:X=X+2 :GOTO 1240 'Vers la droite
13BO IF A=95 OR (A; 32 AND AO3+NBC0UL) THEN 1420 'Changement de stylo
1390 IF A=13 THEN 1470 'Fin de trace
1400 GOTO 1280 'Boucle de trace
1410 '--------------------------------------------------
1420 REM Changement de couleur stylo
1430 '
1440 IF A=95 THEN STYL0=0 ELSE STYL0=A-32
1450 GOTO 1240
1460 '--------------------------------------------------
1470 REM Fin de trace
1480 '
1490 PLOT X,Y,0:CALL &3000 'Sauvegarde écran
1500 CLS
1510 LOCAIE 1,10:INPUT"Sauvegarde magnétique (0/N) ";R$:R$=UPPER$(R$)
1520 IF R$<>"0" AND R*<>"N" THEN 1510
1530 IF R$="N" THEN CALL &3O0C:G0T0 1240 'Restitution écran
1540 LOCATE 1,12 :INPUT"Nom de l'écran ";N$
1550 SAVE N$,B,&4000,&3FFF
1560 LOCATE 1, 14 :INPUT"Poursuite (0/N) " ;R$=R$=UPPER$(R$)
1570 IF R$=”O” YHEN CALL &3O0C:G0TO 1240 'Restitution écran
1580 END

Lignes 1010 à 1060 : Chargement des sous-programmes ASSEMBLEUR.
Lignes 1070 à 1230 : Initialisation du programme.
Lignes 1240 : Affichage du curseur graphique.
Lignes 1280 : Lecture du clavier.
Lignes 1290 à 1400 : Action en fonction de la touche pressée.
Ligne 1440 : Changement de la couleur du tracé.
Lignes 1470 à 1580 : Fin de tracé.
Ligne 1550 : avec sauvegarde magnétique.
Ligne 1530 à 1570 : et/ou retour au tracé.

Le programme BASIC défini ci-dessus utilise deux sous-programmes écrits en ASSEMBLEUR. Ces sous-programmes permettent :

1°) de sauvegarder l'écran en mémoire RAM
(transfert du bloc #C000 à #FFFF en #4000),

2°) de restituer la sauvegarde RAM sur l'écran (transfert du bloc #4000 à #7FFF en #C000).

Ces deux sous-programmes utilisent une mnémonique qui a fait la renommée du Z80 : il s'agit de « LDR ». Son utilisation est très simple : avant l'appel à LDIR, il faut charger les registres HL, DE et BC avec les valeurs suivantes :

HL = Adresse de la première mémoire à déplacer,
DE = Adresse de la première mémoire où va s'effectuer le déplacement,
BC = Longueur du bloc déplacé.
Ce qui donne lieu aux programmes suivants :

1 ORG 3000H
2 ; LOAD 3000H
3 ;----------------------------------
4 ; Sauvegarde de l'écran
5 ;----------------------------------
6 3000 2100C0 LD HL,0C00H ;a Départ
7 3003 110040 LD DE,4000H ;a Sauvegarde
8 3006 01FF3F LD BC,3FFFH ;Longueur
9 3009 EDBO LDIR ;Transfert
10 30DB C9 RET
11 ;----------------------------------
12 ; Restitution de l'écran
13 ;----------------------------------
14 300C 210040 LD HL,4000H ;a Départ
15 3D0F 1100C0 LD DE,0C000M ;a Ecran
16 3012 01FF3F LD BC,3FFFH ;Longueur
17 3015 EDB0 LDIR ;Transfert
18 3017 C9 RET
19 ; END

Page précédente : 5/10 - Logiciels
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 025 millisecondes et consultée 1299 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.