10 '-----------------------------
20 '    PROGRAMME D'ECRITURE
30 '            EN
40 '     DIMENSIONS DOUBLES
50 '        (EN MODE 2)
60 '-----------------------------
70 ON BREAK GOSUB 1100
80 MODE 2
90 INK 0,0:INK 1,6
100 PEN 0: PAPER 1
110 CLS
120 SYMBOL AFTER 160
130 DIM TABLE(20)
140 LOCATE 17,1:PRINT "CARACTERES EN DOUBLE HAUTEUR ET DOUBLE LARGEUR"
150 LOCATE 17,2:PRINT "----------------------------------------------"
160 LOCATE 10,5:PRINT "Vous pouvez definir un alphabet comportant"
170 LOCATE 8,6:PRINT "jusqu'a 20 caracteres."
180 LOCATE 10,7:PRINT "Pour cela,il suffit d'entrer les caracteres au clavier"
190 LOCATE 8,8:PRINT "et de presser la touche";" pour terminer."
200 LOCATE 10,9:PRINT"La barre d'espace vous permet d'effectuer des corrections"
210 LOCATE 8,10:PRINT "et presser la touche";" deux fois,";
220 PRINT" vous fera quitter le programme."
230 WINDOW #0,1,80,1,12
240 PEN #1,0:PAPER #1,1
250 WINDOW #1,1,80,13,25
260 PEN #0,0:PAPER #0,1
270 LOCATE 1,11:PRINT STRING$(80,95)
280 LOCATE #1,30,1:PRINT#1,"ENTREE DE L ALPHABET"
290 LOCATE #1,30,2:PRINT#1,"--------------------"
300 LOCATE #1,10,4:PRINT #1,"Caracteres entres:"
310 LOCATE #1,10,5:PRINT #1,"------------------"
320 CAR=0
330 A$=INKEY$
340 IF A$="" THEN 330
350 IF ASC(A$)=13 THEN 470
360 IF A$<>" " THEN 420
370 LOCATE #1,4+2*CAR,7:PRINT #1,A$;
380 CAR=CAR-1
390 IF CAR<0 THEN CAR=0
400 LOCATE #1,29,4:PRINT #1,CAR
410 GOTO 330
420 CAR=CAR+1
430 IF CAR=21 THEN CAR=20
440 LOCATE #1,4+2*CAR,7:PRINT #1,A$;
450 LOCATE #1,29,4:PRINT #1,CAR
460 TABLE(CAR)=ASC(A$):GOTO 330
470 CLS #1:LOCATE #1,33,1:PRINT#1,"VISUALISATION"
480 LOCATE #1,33,2:PRINT #1,"-------------"
490 FOR INDEX=1 TO CAR
500 A$=CHR$(TABLE(INDEX))
510 CODE=156+4*INDEX
520 LOCATE 1,1:PRINT A$
530 FOR i=0 TO 7
540 x$(i)=BIN$(PEEK (49152+i*2048),8)
550 NEXT i
560 FOR i=0 TO 7
570 FOR j=1 TO 4
580 A(I)=A(I)+2^(8-2*J+1)*VAL(MID$(X$(I),J,1))+2^(8-2*J)*VAL(MID$(X$(I),J,1))
590 NEXT J
600 FOR K=5 TO 8
610 B(I)=B(I)+2^(16-2*K+1)*VAL(MID$(X$(I),K,1))+2^(16-2*K)*VAL(MID$(X$(I),K,1))
620 NEXT K
630 NEXT I
640 SYMBOL CODE,A(0),A(0),A(1),A(1),A(2),A(2),A(3),A(3)
650 SYMBOL CODE+1,A(4),A(4),A(5),A(5),A(6),A(6),A(7),A(7)
660 SYMBOL CODE+2,B(0),B(0),B(1),B(1),B(2),B(2),B(3),B(3)
670 SYMBOL CODE+3,B(4),B(4),B(5),B(5),B(6),B(6),B(7),B(7)
680 LOCATE #1,0+INDEX*3,6:PRINT #1,CHR$(CODE);CHR$(CODE+2)
690 LOCATE #1,0+INDEX*3,7:PRINT #1,CHR$(CODE+1);CHR$(CODE+3)
700 FOR L=0 TO 7:A(L)=0:B(L)=0:NEXT L
710 LOCATE 1,1:PRINT " "
720 NEXT INDEX
730 CLS:LOCATE 33,1:PRINT "DEMONSTRATION"
740 LOCATE 33,2:PRINT "-------------"
750 LOCATE 10,4:PRINT "Vous pouvez maintenant utiliser votre alphabet de grands"
760 LOCATE 8,5:PRINT "caracteres."
770 LOCATE 10,6:PRINT "Vous disposez pour cela de la partie superieure de "
780 LOCATE 8,7:PRINT "l'ecran organisee en deux lignes de 20 caracteres. DEL ";"       vous permet d'effacer."
800 LOCATE 26,9:PRINT "(Barre d'espace pour continuer)"
810 LOCATE 1,11:PRINT STRING$(80,95)
820 R$=INKEY$
830 IF R$="" THEN 820
840 IF R$<>" " THEN 820
850 CLS:LOCATE 33,1:PRINT "DEMONSTRATION"
860 LOCATE 33,2:PRINT "-------------"
870 LOCATE 1,11:PRINT STRING$(80,95)
880 X=1:Y=5
890 LOCATE 1,5:PRINT "--  --  --  --  --  --  --  --  --  --  --  --  --  --  --  --  --  --  --  --"
900 LOCATE 1,9:PRINT "--  --  --  --  --  --  --  --  --  --  --  --  --  --  --  --  --  --  --  --"
910 R$=INKEY$
920 IF R$="" THEN 910
930 IF ASC(R$)=127 THEN 850
940 IF R$=" " THEN 1040
950 Z=ASC(R$):I=1
960 IF Z=TABLE(20) THEN I=20:GOTO 1010
970 WHILE Z<>TABLE(I)
980 I=I+1
990 IF I=21 THEN I=1:GOTO 910
1000 WEND
1010 CODE=160+4*(I-1)
1020 LOCATE X,Y-1:PRINT CHR$(CODE);CHR$(CODE+2)
1030 LOCATE X,Y:PRINT CHR$(CODE+1);CHR$(CODE+3):GOTO 1060
1040 LOCATE X,Y-1:PRINT "  "
1050 LOCATE X,Y:PRINT "  "
1060 X=X+4
1070 IF X>77 AND Y=5 THEN X=1:Y=9:GOTO 910
1080 IF X>77 AND Y=9 THEN X=77:Y=9
1090 GOTO 910
1100 MODE 0
1110 LOCATE 6,6:PRINT "AU REVOIR ET .... "
1120 LOCATE 8,15:PRINT ".... A BIENTOT !!!"
1130 FOR I=1 TO 2000:NEXT I
1140 MODE 2
1150 END