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

    0 POKE 22,0:POKE 862,1
    1 WINDOW:CLS:CLEAR 350:L$=STRING$(39,""):DIM M$(1):E=1:R$="MELODIE ":OUT 136,128
    2 DEF FN K(I)=ASC(MID$(K$,I,1)):DEF FN N(I)=ASC(MID$(N$,I,1)):GOSUB 9:GOTO 11
    3 M$=LEFT$(M$,I-1)+T$+MID$(M$,J+1):RETURN
    4 PRINT "BITTE WAEHLEN:";
    5 E$=INKEY$:IF E$=""THEN 5:ELSE PRINT E$;:RETURN
    6 INPUT "VON TON NR.";I:INPUT "BIS TON NR.";J:RETURN
    7 WINDOW 16,18,0,39:RETURN
    8 WINDOW 0,17,0,39:CLS:RETURN
    9 N$=""+CHR$(183)+" ys le_ZU PLHDA=9 520.+  555"
   10 K$="CcDdEFfGgAaHCcDdEFfGgAaHCcDdEFfGgAaH-:=":RETURN
   11 GOSUB 8:T$="pp":GOSUB 105:PRINT "":PRINT "SOUND":PRINT "":GOSUB 21
   12 WINDOW 5,18,0,39:PRINT "1 - KOMPONIEREN":PRINT "2 - "+R$+"EINLESEN":PRINT "3 -";SPC(9);"AUSLAGERN
   13 PRINT "4 -";SPC(9);"ABSPIELEN":PRINT "5 - MEMORY-SPIEL":PRINT "6 - HAPPY BIRTHDAY
   14 PRINT "7 - GENERIERUNG":PRINT "8 - ENDE":PRINT:GOSUB 4:CLS:Y=VAL(E$)
   15 ON Y GOSUB 16,68,70,108,85,107,71,109:GOTO 11
   16 GOSUB 8:PRINT SPC(5);:FOR I=1 TO 3:PRINT "1234567890 ";:NEXT:PRINT:PRINT L$:FOR I=0 TO 4
   17 PRINT 30*I;CHR$(8);TAB(5);"":PRINT "    ":NEXT
   18 WINDOW 12,17,0,39:CLS:PRINT L$:PRINT "1 - ";R$;"   2 - ABSPIEL
   19 PRINT "3 - AENDERUNG  4 - ENDE" :PRINT L$
   20 GOSUB 4:Y=VAL(E$):GOSUB 7:ON Y GOSUB 24,66,56,11:OUT 128,3:GOTO 18
   21 PRINT AT(19,0);STRING$(39,""):PRINT AT(21,4);STRING$(31,""):PRINT AT(23,5);STRING$(27,"")
   22 PRINT AT(20,4);"CDEFGAHCDEFGAHC"
   23 PRINT AT(22,5);"cd fga cd fga":RETURN
   24 A=E:W=0:E=A:WINDOW 13,14,0,39:CLS
   25 PRINT ": - WIEDERHOLUNG  1/2/3 - OKTAVEN":PRINT "= - ENDE";SPC(10);"SONST - PAUSE";
   26 GOSUB 7:INPUT "EINGABE AB TON NR.";A:CLS:M$=LEFT$(M$,A-1):GOSUB 7
   27 O=0:I=A-1
   28 IF I>149 THEN E=149:RETURN:ELSE I=I+1:JV=J:J=0:IF W=0 THEN 34
   29 H=ASC(MID$(M$,I,1)):Q=H-50*INT(H/50):T=FN N(Q)
   30 T$=CHR$(FN K(Q)):IF Q<43 THEN O=INT((Q-1)/14)
   31 IF T$<>":"THEN 37:ELSE IF B=0 THEN B=I:GOTO 37
   32 IF B>0 THEN I=B:B=-1:GOTO 37
   33 IF B=-1 THEN B=0:GOTO 37
   34 T$=INKEY$:IF T$=""THEN J=J+1:GOTO 34
   35 IF T$>"0"AND T$<"4"THEN O=VAL(T$)-1:GOTO 34
   36 U=INT(J/15):IF U>3 THEN U=3
   37 IF I>A AND F<35 THEN PRINT AT(D,F);CHR$(JJ)
   38 P=O*14:IF W=1 THEN J=Q:GOTO 40
   39 T=ASC(T$):FOR J=P+1 TO 45:IF FN K(J)=T THEN T=FN N(J):GOTO 40:ELSE NEXT:J=43:T$="-
   40 IF J>42 THEN T=0
   41 Q=J:KK=Q-P:C=INT(J/2)*2:IF Y<4 THEN 46
   42 IF J=C THEN S$="":ELSE S$=""
   43 IF T=0 THEN 49
   44 IF Q<30 THEN PRINT AT(16-INT((Q-1)/2),I-1-INT((I-1)/39)*39);S$
   45 GOTO 48
   46 Z=INT((I-2)/30):S=I-Z*30+3:Z=Z+Z+2:S=S+INT((S-5)/10)
   47 IF I>A THEN PRINT AT(Z,S);Z$:PRINT AT(Z+1,S);CHR$(216+U-O*4)
   48 Z$=T$:IF T=0 THEN 51
   49 F=KK+4+P:D=20:IF J=C THEN D=22
   50 JJ=PEEK(-5120+40*D+F):IF F<35 THEN PRINT AT(D,F);" "
   51 OUT 128,3:IF T=0 THEN 53
   52 OUT 128,7:OUT 128,T:IF W=1 THEN U=INT(H/50):FOR L=1 TO V*U*50:NEXT:GOTO 55
   53 IF MS=0 THEN IF I>A THEN M$=M$+CHR$(U*50+JV):IF J=45 THEN E=I:M$=M$+"":RETURN
   54 IF MS=1 THEN Q=ASC(MID$(M$,I,1)):IF T<>FN N(Q-50*INT(Q/50))THEN MS=2:RETURN
   55 IF I<E OR W=0 AND MS=0 THEN 28:ELSE OUT 128,3:E=X:RETURN
   56 WINDOW 13,14,0,39:CLS:PRINT "1 - KORREKTUR":PRINT "2 - STREICHEN       3 - EINFUEGEN";
   57 GOSUB 7:GOSUB 4:Y=VAL(E$):CLS:GOSUB 6:H=J:ON Y GOTO 60,58,59
   58 T$="":GOSUB 3:E=E-J+I-1:RETURN
   59 E=E+J+1-I:H=I-1
   60 T$="":FOR K=I TO J:CLS:PRINT "TON NR.";K;TAB(15)"TASTE :";:GOSUB 5:X$=E$
   61 PRINT:PRINT TAB(15);:O=1:PRINT "OKTAVE:";:GOSUB 5:O=VAL(E$)
   62 FOR L=1 TO 14:P=(O-1)*14+L:IF ASC(X$)=FN K(P)THEN 64
   63 NEXT L:P=43
   64 PRINT:L=1:PRINT TAB(15);"LAENGE:";:GOSUB 5:L=VAL(E$):T$=T$+CHR$(L*50+P)
   65 PRINT:NEXT K:J=H:GOSUB 3:RETURN
   66 OUT 128,3:PRINT "SPIEL MIT TEMPO: ";:GOSUB 5:V=VAL(E$)
   67 CLS:I=1:X=E:J=X:GOSUB 6:A=I:E=J:CLS:W=1:WINDOW 2,11,5,39:CLS:GOSUB 7:GOTO 27
   68 PRINT R$;:INPUT ":";T$:PRINT "RECORDER AUF WIEDERGABE
   69 CLOAD*"*";M$:E=LEN(M$(1)):PRINT M$(0):IF M$(0)<>T$ THEN 69:ELSE M$=M$(1):RETURN
   70 PRINT R$;:INPUT ":";M$(0):PRINT "RECORDER AUF AUFNAHME STELLEN":M$(1)=M$:CSAVE*"*";M$:RETURN
   71 FOR O=0 TO 2:GOSUB 8:PRINT "OKTAVE";O+1;:P=O*14:PRINT "(TASTE = -->STANDARD
   72 PRINT TAB(10)">ENTER< -->WEITER)":PRINT:FOR J=1 TO 13:IF J=6 THEN NEXT
   73 PRINT "TASTE ";CHR$(FN K(J+P));" - FREQUENZ:";FN N(P+J):NEXT:GOSUB 83
   74 E$="":GOSUB 7:CLS:PRINT "TASTE:";:GOSUB 5:IF E$="="THEN GOSUB 9:M$="":RETURN
   75 IF E$=CHR$(13)THEN 84
   76 FOR K=P+1 TO P+14:L=K-P:J=O*14+L:Z=L+2:IF L>5 THEN Z=Z-1
   77 IF E$<>CHR$(FN K(K))THEN NEXT:GOTO 74
   78 PRINT "   NEU:";:GOSUB 5:IF E$<>CHR$(13)THEN K$=LEFT$(K$,K-1)+E$+MID$(K$,K+1)
   80 T=0:PRINT:INPUT "FREQUENZ:";T:IF T<40 OR T>255 THEN T=FN N(K)
   81 PRINT AT(Z,19);T:IF ASC(E$)<>13 THEN PRINT AT(Z,6);E$
   82 T$=CHR$(T):M$=N$:I=K:J=K:GOSUB 3:N$=M$:GOSUB 83:GOTO 74
   83 T$=MID$(N$,P+1,13):GOSUB 105:RETURN
   84 NEXT O:M$="":RETURN
   85 E=1:A=1:M$="":GOSUB 8
   86 PRINT "DIE VOM COMPUTER VORGEGEBENE TONFOLGE":PRINT "IST ZU WIEDERHOLEN.
   87 POKE-5040,32:PRINT AT(4,0);STRING$(15," "):L=RND(PEEK(31))
   88 MS=0:L=INT(RND(1)*13+1):IF L=INT(L/2)*2 THEN 88
   89 M$=M$+CHR$(L):W=1:GOSUB 101:W=0:MS=1
   90 PAUSE 15:PRINT AT(4,0);"BITTE EINGEBEN!":GOSUB 101:IF MS<2 THEN E=E+1:GOTO 87
   91 X=X+1:IF X>13 THEN 93
   92 PAUSE 5:ON INT(X/2)GOSUB 94,95,96,97,98,99:GOTO 100
   93 T$="GRATULIERE! SIE KOENNTEN COMPUTER WERDEN":GOTO 100
   94 T$="FUER TAUBE UND BLINDE NICHT GEEIGNET":RETURN
   95 T$="OHREN WASCHEN UND AUGEN AUF!":RETURN
   96 T$="MEHR KONZENTRATION BITTE!":RETURN
   97 T$="SIE SIND NOCH ENTWICKLUNGSFAEHIG":RETURN
   98 T$="SIE SIND SCHON FAST GUT":RETURN
   99 T$="FABELHAFT! GEDAECHTNIS HERVORRAGEND!":RETURN
  100 PRINT AT(8,0);T$:MS=0:OUT 128,3:T$="":GOSUB 105:PAUSE 20:RETURN
  101 FOR I=6 TO 14 STEP 2:PRINT AT(I,0);L$:PRINT AT(I+1,0);STRING$(60," "):NEXT
  102 POKE-4920,32:IF MS=1 THEN W=0:ELSE W=1
  103 X=E:A=1:V=1:GOSUB 27:IF F<35 THEN PRINT AT(D,F);CHR$(JJ)
  104 RETURN
  105 FOR I=1 TO LEN(T$):T=ASC(MID$(T$,I,1)):IF T<40 THEN NEXT
  106 OUT 128,7:OUT 128,T:PAUSE 2:NEXT:OUT 128,3:RETURN
  107 M$="33geki+33gemk+33sokig"+CHR$(12)+">okmk+":E=28
  108 GOSUB 101:PAUSE 9:RETURN
  109 WINDOW:CLS:PRINT AT(9,9);"AUF WIEDERSEHEN...
  110 T$="":GOSUB 105:PAUSE 5:T$="":GOSUB 105:CLS:CLEAR 256:OUT 136,0:END