5/10.1 Programme de dessinCe 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 ENDLignes 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
CPCrulez[Content Management System] v8.7-desktop Page créée en 025 millisecondes et consultée 1299 foisL'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. |
|