sound2_sss.tap
sound2_sss.z80
Zeichensatz UTF-8+Z1013()+CTRL()-ohne Umlaute(äöüß)

    4 WINDOW
    5 CLS
   10 WINDOW 0,23,2,39 :CLS
   20 DATA 245,197,237,75,0,2,197,237,75,152
   30 DATA 239,197,1,71,79,237,67,152,239,58
   40 DATA 191,2,254,0,62,133,202,48,2,203
   50 DATA 239,211,128,58,188,2,211,128,1,69
   60 DATA 2,237,67,0,2,237,75,189,2,195
   70 DATA 66,2,219,136,238,128,211,136,11,251
   80 DATA 120,177,202,84,2,237,77,193,193,237
   90 DATA 67,152,239,193,237,67,0,2,193,62
  100 DATA 3,211,128,219,136,230,127,211,136,241,237,77
  110 DIM F(123)
  120 FOR A=0 TO 91
  130 READ B
  140 POKE 529+A,B
  150 NEXT A
  160 PRINT "START"
  170 FOR A=25 TO 69 STEP 4
  180 POKE 700,A
  190 B=INT(10000/A)
  200 DOKE 701,B
  210 POKE 703,0
  220 PRINT A,B
  230 CALL 529
  240 DOKE 512,-189
  250 NEXT A
  260 PRINT:PRINT " 1 KURZE MELODIE"
  270 PRINT " 2 LANGE MELODIE":PRINT
  280 INPUT " WAHL:";AB
  290 IF AB=1 THEN AB=2:ELSE AB=1
  300 CLS:WINDOW 15,23,2,19
  310 FOR A=1 TO 9 STEP 2
  320 PRINT AT(A,0);STRING$(40,"")
  330 NEXT A
  340 FOR A=0 TO 10 STEP 2
  350 PRINT AT(A,0);STRING$(40," ")
  360 NEXT A
  370 FOR A=0 TO 120 STEP 3
  380 F(A)=0
  390 NEXT A
  400 PRINT AT(15,21);"G GANZE N."
  410 PRINT AT(16,21);"H HALBE N."
  420 PRINT AT(17,21);"V VIERTEL N."
  430 PRINT AT(18,21);"A ACHTEL N."
  440 PRINT AT(19,21);"S SECHZEHNTEL"
  450 PRINT AT(20,21);"P PAUSE"
  460 PRINT AT(21,21);"KURSORTASTEN"
  470 PRINT AT(22,21);"DEL STREICHEN-ENDE"
  480 PRINT AT(23,21);"ESC NEUE MELODIE"
  490 A=1:B=5:P=160
  500 PRINT AT(5,1);"*"
  510 R$=INKEY$
  520 IF LEN(R$)=0 THEN 510
  530 R=ASC(R$)
  540 C=A:D=B
  550 IF R=80 THEN 1130
  560 IF R=24 THEN A=39
  570 IF R=25 THEN A=1
  580 IF R=27 THEN 300
  590 IF R=31 THEN 1430
  600 IF R=10 THEN B=B+1
  610 IF R=11 THEN B=B-1
  620 IF R=8 THEN A=A-AB
  630 IF R=9 THEN A=A+AB
  640 IF A<1 THEN A=1
  650 IF A>39 THEN A=39
  660 IF B<0 THEN B=0
  670 IF B>10 THEN B=10
  680 IF R=71 THEN 780
  690 IF R=72 THEN 780
  700 IF R=86 THEN 780
  710 IF R=65 THEN 780
  720 IF R=83 THEN 780
  730 IF R=29 THEN 1250
  740 POKE C+40*D-5120,P
  750 P=PEEK(A+40*B-5120)
  760 POKE A+40*B-5120,42
  770 GOTO 510
  780 FOR C=1 TO 9 STEP 2
  790 PRINT AT(C,A);""
  800 PRINT AT(C-1,A);" "
  810 NEXT C
  820 PRINT AT(10,A);" "
  830 IF R=83 OR R=65 OR R=86 THEN A$="":ELSE A$=""
  840 PRINT AT(B,A);A$
  850 IF R=71 THEN 870
  860 IF B>4 THEN PRINT AT(B-1,A);"":ELSE PRINT AT(B+1,A);""
  870 A=A+AB
  880 IF A>39 THEN 910
  890 P=PEEK(A+40*B-5120)
  900 PRINT AT(B,A);"*"
  910 IF AB=1 THEN C=3*A-3:ELSE C=3*INT(A/2)
  920 D=C+1
  930 E=C+2
  940 IF B=0 THEN F(C)=25:F(D)=1000:F(E)=0
  950 IF B=1 THEN F(C)=28:F(D)=950 :F(E)=0
  960 IF B=2 THEN F(C)=30:F(D)=900 :F(E)=0
  970 IF B=3 THEN F(C)=33:F(D)=850 :F(E)=0
  980 IF B=4 THEN F(C)=37:F(D)=800 :F(E)=0
  990 IF B=5 THEN F(C)=40:F(D)=750 :F(E)=0
 1000 IF B=6 THEN F(C)=44:F(D)=700 :F(E)=0
 1010 IF B=7 THEN F(C)=50:F(D)=650 :F(E)=0
 1020 IF B=8 THEN F(C)=56:F(D)=600 :F(E)=0
 1030 IF B=9 THEN F(C)=59:F(D)=550 :F(E)=0
 1040 IF B=10 THEN F(C)=66:F(D)=500 :F(E)=0
 1050 IF R=71 THEN V=8
 1060 IF R=72 THEN V=4
 1070 IF R=86 THEN V=2
 1080 IF R=65 THEN V=1
 1090 IF R=83 THEN V=.5
 1100 F(D)=F(D)*V
 1110 IF A>39 THEN P=PEEK(40*B-5081):A=39:GOTO 1250
 1120 GOTO 510
 1130 FOR C=1 TO 9 STEP 2
 1140 PRINT AT(C,A);""
 1150 PRINT AT(C-1,A);" "
 1160 NEXT C
 1170 PRINT AT(10,A);""
 1180 IF AB=1 THEN C=3*A:ELSE C=3*INT(A/2)+3
 1190 F(C)=-1
 1200 A=A+AB
 1210 IF A>39 THEN 1250
 1220 P=PEEK(A+40*B-5120)
 1230 PRINT AT(B,A);"*"
 1240 GOTO 510
 1250 D=3:L=1
 1260 CLS
 1270 IF A>39 THEN A=39
 1280 IF L>39 THEN E=0:L=39:GOTO 1310
 1290 PRINT AT(11,L);"*"
 1300 E=F(D)
 1310 IF E=0 THEN PRINT "SOUND OK":PRINT:PRINT AT(11,L);" ":GOTO 510
 1320 IF E=-1 THEN 1410
 1330 POKE 700,E
 1340 DOKE 701,F(D+1)
 1350 POKE 703,F(D+2)
 1360 CALL 529
 1370 DOKE 512,-189
 1380 D=D+3 
 1390 PRINT AT(11,L);" ":L=L+AB
 1400 GOTO 1280
 1410 PAUSE 3
 1420 GOTO 1380
 1430 FOR C=1 TO 9 STEP 2
 1440 PRINT AT(C,A);""
 1450 PRINT AT(C-1,A);" "
 1460 NEXT C
 1470 PRINT AT(10,A);" "
 1480 IF AB=1 THEN F(3*A)=0:ELSE F(3*INT(A/2)+3)=0
 1490 A=A-AB
 1500 IF A<1 THEN A=1
 1510 GOTO 510