10  ' *****************
20  ' *               *
30  ' * REFLEXION RAG *
40  ' *               *
50  ' *  musique  de  *
60  ' *               *
70  ' * SCOTT  JOPLIN *
80  ' *               *
90  ' *  adaptation : *
100 ' *               * 
110 ' * HENRI BITTNER *
120 ' *               *
130 ' *****************
140 '
150 DEFINT a-z
160 ENV 1,1,9,1,2,-1,2,7,-1,8
170 ENV 2,3,2,1,1,1,1,1,0,8,5,-1,4,2,1,20
180 ENV 3,1,7,4,7,-1,20
190 ENT -6,1,0,14,1,1,7,2,-1,7,1,1,7
200 DIM n(409):DIM d(409):DIM m(264):DIM e(264)
210 '
220 ' * lecture et stockage des donnees *
230 '
240 MODE 2
250 PRINT"VEUILLEZ PATIENTER QUELQUES INSTANTS  S.V.P."
260 '
270 FOR i=1 TO 409
280 READ x,y:n(i)=x:d(i)=y
290 NEXT
300 '
310 FOR i=1 TO 264
320 READ x,y:m(i)=x:e(i)=y
330 NEXT
340 '
350 GOSUB 2460
360 '
370 EVERY 6,0 GOSUB 2820
380 EVERY 26,1 GOSUB 2890
390 '
400 ' * boucle principale *
410 '
420 t=14:a=1:b=1:k=0:y=1
430 g=0:h=0
440 SQ(1) GOSUB 670
450 SQ(2) GOSUB 750
460 WHILE a>0 OR b>0:WEND 
470 k=k+1
480 ON k GOTO 490,500,490,510,520,530,520,540,550,560,550,570,580,590,580,600,610
490 a=26:b=20:GOTO 430
500 a=123:b=77:GOTO 430
510 a=127:b=86:GOTO 430
520 a=135:b=92::GOTO 430
530 a=207:b=158:GOTO 430
540 a=216:b=162:GOTO 430
550 a=223:b=167:y=1:GOTO 430
560 a=268:b=182:GOTO 430
570 a=282:b=188:GOTO 430
580 a=295:b=197:GOTO 430
590 a=402:b=253:GOTO 430 
600 a=406:b=259:GOTO 430
610 GOTO 420
620 '
630 ' * interpretation *
640 '
650 ' * canal A & C *
660 '
670 IF g=0 THEN s=57 ELSE s=1
680 IF a=129 THEN y=3 ELSE IF a=293 THEN y=2
690 f=n(a):l=d(a):IF f=0 THEN v=0 ELSE v=y
700 IF f+l=0 THEN a=0:RETURN
710 SOUND s,f,l*t,0,v,6:SOUND s+3,f*2,l*t,0,v,6:a=a+1:g=1:SQ(1) GOSUB 670:RETURN
720 '
730 ' * canal B *
740 '
750 IF h=0 THEN s=58 ELSE s=2
760 IF b=88 THEN y=3
770 f=m(b):l=e(b):IF f=0 THEN v=0 ELSE v=y
780 IF f+l=0 THEN b=0:RETURN:ELSE SOUND s,f,l*t,0,v,6:b=b+1:h=1:SQ(2) GOSUB 750:RETURN
790 '
800 ' DATA notes
810 '
820 ' canal A & C
830 ' 1
840 DATA 106,2,95,1,100,1,106,2,0,2
850 DATA 106,2,95,1,100,1,106,2,0,2
860 DATA 106,2,106,1,95,1,84,1,80,1,75,1,71,1
870 DATA 84,2,190,1,213,1,213,1,284,1,379,1,338,1,0,0
880 ' 2
890 DATA 0,1,127,1,142,1,159,1,127,1,106,2,95,1
900 DATA 106,1,80,1,63,1,53,1,53,1,63,1,71,1,80,1
910 DATA 119,1,100,1,95,1,119,1,80,1,95,1,106,1,119,1
920 DATA 127,4,142,1,119,1,127,1,142,1
930 DATA 0,1,127,1,142,1,159,1,127,1,106,2,95,1
940 DATA 106,1,80,1,63,1,53,1,53,1,63,1,71,1,80,1
950 DATA 0,1,113,1,95,1,80,1,63,1,71,2,80,1
960 DATA 84,2,95,1,106,1,0,2,119,2
970 DATA 0,1,127,1,142,1,159,1,127,1,106,2,95,1
980 DATA 106,1,80,1,63,1,53,1,53,1,63,1,71,1,80,1
990 DATA 0,1,100,1,95,1,119,1,80,1,95,1,106,1,119,1
1000 DATA 127,4,142,4
1010 DATA 0,5,127,1,0,1,159,1
1020 DATA 0,5,127,1,0,1,159,1
1030 DATA 127,1,95,1,106,1,127,1,0,1,169,1,0,1,169,1,0,0
1040 ' 3
1050 DATA 0,1,80,1,0,6,0,0
1060 ' 4
1070 DATA 0,1,80,1,190,1,213,1,0,1,127,1,0,2,0,0
1080 ' 5
1090 DATA 159,4,95,4
1100 DATA 169,2,127,2,0,1,142,1,127,1,84,1
1110 DATA 127,4,127,1,142,1,169,1,142,1
1120 DATA 0,1,95,1,0,1,95,1,0,4
1130 DATA 119,4,119,1,127,1,142,1,169,1
1140 DATA 159,1,127,1,95,4,80,2
1150 DATA 84,2,100,2,0,2,113,2
1160 DATA 127,2,142,1,159,1,169,2,253,2
1170 DATA 159,4,95,4
1180 DATA 169,2,127,2,0,1,142,1,127,1,84,1
1190 DATA 127,4,127,1,142,1,169,1,142,1
1200 DATA 159,1,95,1,190,1,95,1,0,4
1210 DATA 71,4,71,1,80,1,84,1,71,1
1220 DATA 80,1,127,1,95,1,159,1,95,3,80,1
1230 DATA 84,1,127,1,63,1,71,1,80,2,84,2,0,0
1240 ' 6
1250 DATA 95,1,127,1,159,1,127,1,0,1,142,1,0,1,127,1,0,0
1260 ' 7
1270 DATA 95,1,127,1,0,1,159,1,159,2,0,2,0,0
1280 ' 8
1290 DATA 95,1,60,1,60,1,95,1,89,1,60,1,84,1,60,1
1300 DATA 80,1,71,1,63,1,60,1,53,1,47,1,53,1,63,1
1310 DATA 60,1,95,1,95,1,60,1,63,1,127,1,67,1,95,1
1320 DATA 71,1,80,1,89,1,95,1,89,1,80,1,71,1,89,1
1330 DATA 71,1,75,1,71,1,60,2,53,1,60,2
1340 DATA 80,1,81,1,80,1,60,2,53,1,60,2,0,0
1350 ' 9
1360 DATA 89,1,95,1,89,1,71,1,71,1,63,1,71,1,89,1
1370 DATA 95,4,106,1,159,1,100,1,159,1,0,0
1380 ' 10
1390 DATA 89,1,95,1,89,1,71,1,159,1,80,1,89,1,106,1
1400 DATA 119,4,0,2,159,1,142,1,0,0
1410 ' 11
1420 DATA 127,2,142,1,179,1,179,1,127,1,142,1,159,1
1430 DATA 159,1,127,1,89,1,95,1,106,1,127,1,0,2
1440 DATA 142,1,95,1,0,2,239,1,142,1,159,1,179,1
1450 DATA 190,1,159,1,119,1,95,1,319,1,95,1,0,2
1460 DATA 127,1,106,1,106,1,119,1,127,1,106,1,71,1,80,1
1470 DATA 80,4,0,2,159,2
1480 DATA 119,1,95,1,95,1,106,1,119,1,95,1,71,1,80,1
1490 DATA 80,2,80,1,95,1,106,1,119,1,159,1,142,1
1500 DATA 127,2,142,1,179,1,179,1,127,1,142,1,159,1
1510 DATA 159,1,127,1,89,1,95,1,106,1,127,1,0,2
1520 DATA 142,1,95,1,0,2,239,1,142,1,159,1,179,1
1530 DATA 190,1,159,1,119,1,95,1,319,1,95,1,159,1,95,1
1540 DATA 95,1,106,1,106,1,95,1,89,1,80,1,71,1,106,1
1550 DATA 239,1,119,1,127,1,119,1,95,1,80,1,80,1,95,1
1560 DATA 89,1,80,1,71,1,89,1,89,1,127,1,80,2,0,0
1570 ' 12
1580 DATA 119,6,159,1,142,1,0,0
1590 ' 13
1600 DATA 119,4,159,2,0,2,0,0
1610 ' fin canal A
1620 '
1630 ' canal B
1640 ' 1
1650 DATA 213,4,213,1,231,1,284,1,213,1
1660 DATA 213,4,213,1,213,1,284,1,213,1
1670 DATA 213,8
1680 DATA 213,2,190,1,213,1,213,1,284,1,379,1,338,1,0,0
1690 ' 2
1700 DATA 319,4,213,4
1710 DATA 213,4,159,4
1720 DATA 239,4,0,4
1730 DATA 319,2,268,1,253,1,213,4
1740 DATA 319,4,213,4
1750 DATA 213,4,319,4
1760 DATA 284,4,379,4
1770 DATA 0,1,213,1,119,1,0,1,284,1,213,1,142,1,213,1
1780 DATA 319,4,213,4
1790 DATA 213,4,159,4
1800 DATA 239,4,0,4
1810 DATA 319,2,268,1,253,1,213,1,190,1,284,1,239,1
1820 DATA 253,1,239,1,225,1,213,1,190,1,159,1,213,2
1830 DATA 253,1,239,1,225,1,213,1,190,1,159,1,213,2
1840 DATA 319,4,213,1,119,1,142,1,119,1,0,0
1850 ' 3
1860 DATA 159,1,127,1,213,1,225,1,213,1,201,1,190,1,179,1,0,0
1870 ' 4
1880 DATA 159,1,127,1,0,2,319,2,253,2,0,0
1890 ' 5
1900 DATA 159,4,95,4
1910 DATA 169,2,127,2,253,4
1920 DATA 201,2,190,2,169,2,0,2
1930 DATA 159,1,127,1,190,1,127,1,201,1,190,1,253,1,319,1
1940 DATA 284,2,379,2,338,4
1950 DATA 379,4,253,4
1960 DATA 201,4,338,2,134,2
1970 DATA 253,4,0,4
1980 DATA 159,2,379,1,127,1,159,1,169,1,190,1,159,1
1990 DATA 169,2,127,2,253,4
2000 DATA 201,2,190,2,169,2,0,2
2010 DATA 159,1,127,1,190,1,127,1,201,1,190,1,253,1,319,1
2020 DATA 284,1,119,1,379,1,119,1,253,2,142,1,119,1
2030 DATA 379,4,379,1,159,1,127,2
2040 DATA 201,1,142,1,100,1,119,1,253,4,0,0
2050 ' 6
2060 DATA 379,4,253,2,169,2,0,0
2070 ' 7
2080 DATA 379,2,253,2,379,2,0,2,0,0
2090 ' 8
2100 DATA 0,8
2110 DATA 0,8
2120 DATA 0,4,319,1,159,1,239,1,119,1
2130 DATA 179,4,0,4
2140 DATA 179,1,127,1,119,1,0,5
2150 DATA 379,8,0,0
2160 ' 9
2170 DATA 213,8
2180 DATA 239,2,159,1,142,1,253,4,0,0
2190 ' 10
2200 DATA 213,4,159,2,253,2
2210 DATA 239,2,142,1,159,1,190,2,201,2,0,0
2220 ' 11
2230 DATA 159,1,319,1,319,2,319,4
2240 DATA 179,6,179,1,159,1
2250 DATA 142,1,119,1,159,1,190,1,239,4
2260 DATA 190,4,319,2,159,2
2270 DATA 319,2,358,2,159,4
2280 DATA 159,1,127,1,213,1,159,1,319,4
2290 DATA 190,2,159,2,190,2,0,2
2300 DATA 159,1,119,1,0,4,201,2
2310 DATA 159,1,319,1,319,2,319,4
2320 DATA 179,6,179,1,159,1
2330 DATA 142,1,119,1,159,1,190,1,239,4
2340 DATA 190,4,319,1,119,1,159,1,119,1
2350 DATA 284,2,179,2,213,4
2360 DATA 239,4,239,4
2370 DATA 213,4,319,4,0,0
2380 ' 12
2390 DATA 190,2,213,1,190,1,239,2,201,2,0,0
2400 ' 13
2410 DATA 239,2,338,1,319,1,239,2,0,2,0,0
2420 ' fin canal B
2430 '
2440 ' presentation
2450 '
2460 MODE 1:BORDER 0
2470 c1=15:c2=19:c3=6
2480 INK 0,0:INK 1,c1:INK 2,c2:INK 3,c3
2490 WINDOW #1,14,28,4,21:PAPER #1,0:PEN #1,1:CLS#1
2500 PRINT#1
2510 '
2520 c=4
2530 RESTORE 2780
2540 FOR i=1 TO 93
2550 READ a$:IF i MOD 16=0 THEN PRINT#1,CHR$(10)
2560 IF a$="*" THEN PRINT#1,CHR$(32);:GOTO 2600
2570 c=c-1:IF c=0 THEN c=3
2580 PEN #1,c
2590 PRINT#1,a$;
2600 NEXT 
2610 '
2620 PLOT 304,64:DRAWR 48,0,c
2630 c=3
2640 '
2650 FOR i=1 TO 15
2660 c=c+1:IF c=4 THEN c=1
2670 LOCATE 13+i,3:PEN 4-c:PRINT CHR$(238);
2680 LOCATE 13+i,23:PEN c:PRINT CHR$(238);
2690 NEXT 
2700 '
2710 FOR i=3 TO 23
2720 c=c+1:IF c=4 THEN c=1
2730 LOCATE 13,i:PEN c:PRINT CHR$(238)
2740 LOCATE 29,i:PEN 4-c:PRINT CHR$(238)
2750 NEXT
2760 RETURN
2770 '
2780 DATA *,C,P,C,*,*,p,r,e,s,e,n,t,e,*,*,R,E,F,L,E,X,I,O,N,*,R,A,G,*,*,*,*,m,u,s,i,q,u,e,*,*,d,e,*,*,*,*,S,C,O,T,T,*,*,J,O,P,L,I,N,*,*,*,P,r,o,g,r,a,m,m,a,t,i,o,n,*,*,*,H,e,n,r,i,*,B,I,T,T,N,E,R
2790 '
2800 ' changements de couleur
2810 '
2820 p=p+1:IF p=4 THEN p=1
2830 CALL &BD19
2840 ON p GOTO 2850,2860,2870
2850 INK 1,c1:INK 2,c2:INK 3,c3:RETURN
2860 INK 1,c2:INK 2,c3:INK 3,c1:RETURN 
2870 INK 1,c3:INK 2,c1:INK 3,c2:RETURN 
2880 '
2890 al=INT(RND*26)+1:ap=ap+1
2900 ON ap GOTO 2910,2920,2930
2910 INK 1,al:c1=al:RETURN 
2920 INK 2,al:c2=al:RETURN
2930 INK 3,al:c3=al:ap=0:RETURN