 100 '* Andre Cheramy (c)2020 *
 110 '* ENVELOP *
 120 'V 20200525-1614
 130 'On met les 8 octets du code machine en #9800
 140 FOR K=0 TO 7 :READ LM:POKE #9800+K,LM:NEXT
 150 DATA #A2,#08,#A0,#98,#20,#86,#FA,#60
 160 CLS:ACCENT OFF:PRINT@2,3;"        ENVELOPPES AU CHOIX:"
 170 PRINT@2, 4;" (TESTS AVEC NOTE LA DE L'OCTAVE 3) "
 180 PRINT@2, 6;"       0 - #00 \ PUIS ARRET"
 190 PRINT@2, 7;"       1 - #01 \ PUIS ARRET"
 200 PRINT@2, 8;"       2 - #02 \ PUIS ARRET"
 210 PRINT@2, 9;"       3 - #03 \ PUIS ARRET"
 220 PRINT@2,10;"       4 - #04 / PUIS ARRET"
 230 PRINT@2,11;"       5 - #05 / PUIS ARRET"
 240 PRINT@2,12;"       6 - #06 / PUIS ARRET"
 250 PRINT@2,13;"       7 - #07 / PUIS ARRET"
 260 PRINT@2,14;"       8 - #08 REPETITION \\\\"
 270 PRINT@2,15;"       9 - #09 \ PUIS NIV BAS"
 280 PRINT@2,16;"      10 - #0A REPETITION \/\/"
 290 PRINT@2,17;"      11 - #0B \ PUIS NIV HAUT"
 300 PRINT@2,18;"      12 - #0C REPETITION ////"
 310 PRINT@2,19;"      13 - #0D / PUIS NIV HAUT"
 320 PRINT@2,20;"      14 - #0E REPETITION /\/\"
 330 PRINT@2,21;"      15 - #0F / PUIS NIV BAS"
 340 '
 350 PRINT@2,23;"     ";:INPUT C
 360 IF C= 0 THEN !RESTORE 630:GOTO 590
 370 IF C= 1 THEN !RESTORE 660:GOTO 590
 380 IF C= 2 THEN !RESTORE 690:GOTO 590
 390 IF C= 3 THEN !RESTORE 720:GOTO 590
 400 IF C= 4 THEN !RESTORE 750:GOTO 590
 410 IF C= 5 THEN !RESTORE 780:GOTO 590
 420 IF C= 6 THEN !RESTORE 810:GOTO 590
 430 IF C= 7 THEN !RESTORE 840:GOTO 590
 440 IF C= 8 THEN !RESTORE 870:GOTO 590
 450 IF C= 9 THEN !RESTORE 900:GOTO 590
 460 IF C=10 THEN !RESTORE 930:GOTO 590
 470 IF C=11 THEN !RESTORE 960:GOTO 590
 480 IF C=12 THEN !RESTORE 990:GOTO 590
 490 IF C=13 THEN !RESTORE 1020:GOTO 590
 500 IF C=14 THEN !RESTORE 1050:GOTO 590
 510 IF C=15 THEN !RESTORE 1080:GOTO 590
 520 IF C=16 THEN !RESTORE 1100:GOTO 590
 530 IF C=17 THEN !RESTORE 1100:GOTO 590
 540 IF C=18 THEN !RESTORE 1100:GOTO 590
 550 IF C=19 THEN !RESTORE 1100:GOTO 590
 560 IF C=20 THEN !RESTORE 1100:GOTO 590
 570 GOTO 350
 580 'On met les 14 parametres pour le PSG en #9808
 590 FOR I=0 TO 13:READ PA:POKE#9808+I,PA:NEXT
 600 CALL#9800:'Envoie les 14 parametres au PSG
 610 GOTO 350:'Menu
 620 ' 0
 630 DATA #8E,#00,#00,#00,#00,#00,#00
 640 DATA #3E,#10,#00,#00,#00,#10,#00
 650 ' 1
 660 DATA #8E,#00,#00,#00,#00,#00,#00
 670 DATA #3E,#10,#00,#00,#00,#10,#01
 680 ' 2
 690 DATA #8E,#00,#00,#00,#00,#00,#00
 700 DATA #3E,#10,#00,#00,#00,#10,#02
 710 ' 3
 720 DATA #8E,#00,#00,#00,#00,#00,#00
 730 DATA #3E,#10,#00,#00,#00,#10,#03
 740 ' 4
 750 DATA #8E,#00,#00,#00,#00,#00,#00
 760 DATA #3E,#10,#00,#00,#00,#10,#04
 770 ' 5
 780 DATA #8E,#00,#00,#00,#00,#00,#00 
 790 DATA #3E,#10,#00,#00,#00,#10,#05
 800 ' 6
 810 DATA #8E,#00,#00,#00,#00,#00,#00
 820 DATA #3E,#10,#00,#00,#00,#10,#06
 830 ' 7
 840 DATA #8E,#00,#00,#00,#00,#00,#00
 850 DATA #3E,#10,#00,#00,#00,#10,#07
 860 ' 8
 870 DATA #8E,#00,#00,#00,#00,#00,#00
 880 DATA #3E,#10,#00,#00,#00,#10,#08
 890 ' 9
 900 DATA #8E,#00,#00,#00,#00,#00,#00
 910 DATA #3E,#10,#00,#00,#00,#10,#09
 920 '10
 930 DATA #8E,#00,#00,#00,#00,#00,#00
 940 DATA #3E,#10,#00,#00,#00,#10,#0A
 950 '11
 960 DATA #8E,#00,#00,#00,#00,#00,#00
 970 DATA #3E,#10,#00,#00,#00,#10,#0B
 980 '12
 990 DATA #8E,#00,#00,#00,#00,#00,#00
 1000 DATA #3E,#10,#00,#00,#00,#10,#0C
 1010 '13
 1020 DATA #8E,#00,#00,#00,#00,#00,#00
 1030 DATA #3E,#10,#00,#00,#00,#10,#0D
 1040 '14
 1050 DATA #8E,#00,#00,#00,#00,#00,#00
 1060 DATA #3E,#10,#00,#00,#00,#10,#0E
 1070 '15
 1080 DATA #8E,#00,#00,#00,#00,#00,#00
 1090 DATA #3E,#10,#00,#00,#00,#10,#0F
 1100 'Infos 
 1110 '9800 LDX #08   #9808 Adresse de stockage
 1120 '9802 LDY #98   des 14 parametres a envoyer
 1130 '9804 JSR #FA86 Envoyer 14 parametres au PSG
 1140 '9807 RTS
 1150 'Parametres PSG 14 registres de R0 a R13
 1160 'R0&1 Periode canal 1 (de #00 a #0FFF)
 1170 'R2&3 Periode canal 2 (de #00 a #0FFF)
 1180 'R4&5 Periode canal 3 (de #00 a #0FFF)
 1190 'R6 Periode bruit blanc (de 0 a #1F)
 1200 'R7 Controle des canaux en service (de #00 a #3F) (0=actif)
 1210 '  b0 = canal 1, b1 = canal 2, b2 = canal 3
 1220 '  b3 = bruit 1, b4 = bruit 2, b5 = bruit 3
 1230 'R8 Volume canal 1 (de #00 a #10) (#10=controle par enveloppe)
 1240 'R9 Volume canal 2 (de #00 a #10) (idem)
 1250 'R10 Volume canal 3 (de #00 a #10) (idem)
 1260 'R11&12 Periode de l'enveloppe (de #00 a $FFFF)
 1270 'R13 Forme de l'enveloppe (de #00 a #0F)
 1280 '  b0 = HOLD son continu (0 = repete profil, 1 = maintien dernier son)
 1290 '  b1 = ALT alterner front montant/descendant
 1300 '  b2 = ATT front initial (0 = descendant, 1 = 0 montant)
 1310 '  b3 = CONT repetition du motif initial (0 = limite dans la duree)
