10 REM 20 REM 30 REM \VERS[TTNING OCH 40 REM SAMMANST[LLNING 50 REM RISTO KOIVULA 60 REM * RIKO DATA * 70 REM 1981-11-15 80 REM 90 REM 100 ; CHR$(12%) 110 REM BLINK SIDNUMMER 120 POKE 31783%,49% OR 128% 130 ; TAB(14%)'INNEH]LL' 140 ; TAB(14%)'========' : ; 150 ; 'SIDA INNEH]LL' : ; 160 ; ' 1 Inneh}ll' 170 ; ' 2 Musikprogrammet TONE' 180 ; ' 3 TONE-notskrift' 190 ; ' 4 Oktavomf}ng' 200 ; ' 5 Tonh|jd' 210 ; ' 6 Tonl{ngd' 220 ; ' 7 Anv{ndning av programmet' 230 GOTO 1010 240 ; ' MUSIKPROGRAMMET TONE' 250 ; ' --------------------' 260 ; 'Nu har ABC 80 blivit riktigt musikalisk.'; 270 ; 'Du kan nu l{ra den spela din favoritme-' 280 ; 'lodi med detta program. Programmet {r' 290 ; 'gjort av Esa A. Reiman & Mika Helenius' 300 ; 'fr}n Finland, och beskrivet i den finska'; 310 ; 'ABC-klubbens f|rsta tidningsutg}va.' 320 ; : ; 'Med TONE kan man l{tt komponera och spe-'; 330 ; 'la melodier, eftersom det {r lika enkelt'; 340 ; 'att {ndra i melodin som att {ndra i ett' 350 ; 'BASIC-program. Melodin skrivs n{mligen i'; 360 ; 'BASIC.' : ; 370 ; 'TONE {r gjort i assembler. Melodin kodas'; 380 ; 'till en speciell notskrift, som sedan' 390 ; 'skickas som en str{ng via kasettutg}ngen'; 400 ; 'till kasett, h|rlurar eller f|rst{rkare.' 410 GOTO 1010 420 ; ' TONE-NOTSKRIFT' 430 ; ' --------------' 440 ; 'I den kodade notstr{ngen finns det van-' 450 ; 'ligen flera noter. En not inneh}ller tre'; 460 ; 'element, n{mligen oktav, tonh|jd och' 470 ; 'l{ngd.' 480 GOTO 1010 490 ; ' OKTAVOMF]NG' 500 ; ' -----------' 510 ; 'Man v{ljer oktav med de stora bokst{ver-'; 520 ; 'na U....Z, d{r U betyder lilla oktaven,' 530 ; 'V betyder ettstrukna, W tv}strukna osv.' 540 ; 'Oktav-elementet kan ocks} saknas helt.' 550 ; 'D} antas noten h|ra till samma oktav som'; 560 ; 'f|reg}ende not. Om noten {r f|rst i' 570 ; 'str{ngen, antas den h|ra till ettstrukna'; 580 ; 'oktaven.' 590 GOTO 1010 600 ; ' TONH\JD' 610 ; ' -------' 620 ; 'Tonh|jden anges med n}gon av bokst{verna'; 630 ; 'i skalan, C, D, E, F, G, A, eller H.' 640 ; 'H|jda toner f}r man genom att framf|r' 650 ; 'bokstaven skriva # (E och H kan ej ' 660 ; 'h|jas). En paus f}s genom att som ton-' 670 ; 'h|jd skriva ett blanktecken.' 680 GOTO 1010 690 ; ' TONL[NGD' 700 ; ' --------' 710 ; 'Tonens eller pausens l{ngd anges med en' 720 ; 'siffra. En helnot {r t.ex. 0, halvnot 1,'; 730 ; 'fj{rdedelsnot 2 osv. Siffran kan f|reg}s'; 740 ; 'av ett f|rl{ngningstecken (.) punkt.' 750 ; : ; 'Exempel:' 760 ; : ; 'VC3 1-strukna }ttondedels-C' 770 ; 'WF.2 2-strukna f|rl{ngt fj{rdedels-F' 780 ; 'V#A.4 1-strukna f|rl{ngt 16-dels-Aiss.' 790 GOTO 1010 800 ; ' ANV[NDNING AV PROGRAMMET' 810 ; ' ------------------------' 820 ; 'Ladda TONE programmet och k|r det. G|r' 830 ; "d{refter 'SCR' eller 'NEW', men tryck" 840 ; "inte p} 'RESET'." : ; 850 ; "Ladda sedan |nskad melodi, ex. 'ROCK'." 860 ; 'Programmet b|rjar med fil|ppnings-satsen'; 870 ; '1000 OPEN "S[V:10" ASFILE 1' 880 ; 'Talet 10 {r styckets tempotal. Det anger'; 890 ; 'helnotens l{ngd i tiondels sekunder.' 900 ; "I exemplet 'ROCK' {r allts} helnotens" 910 ; 'l{ngd 1.0 sekunder.' : ; 920 ; "F|r att spara melodin p} kasett, tryck" 930 ; "p} 'REC' och 'PLAY' samt skriv 'RUN'." 940 ; "Melodin sparas nu som str{ngar och kan " 950 ; 'spelas upp p} en vanlig kasettbandspela-'; 960 ; 're. Om du vill lyssna direkt, skriver du'; 970 ; "bara 'RUN', och kan lyssna genom att" 980 ; 'koppla in en h|rlur eller f|rst{rkare' 990 ; "till kasettutg}ngen." 1000 REM SID- ELLER PRINTERVAL 1010 ; CUR(23%,0%)'Printer = (P)'CUR(23%,28%)'V{lj sida !';CUR(0%,39); 1020 GET A$ : ; CUR(23%,0%)SPACE$(25%); 1030 X%=ASC(A$) 1040 IF X%=80% GOSUB 1100 1050 IF X%<49% OR X%>55% GOTO 1020 1060 ; CHR$(12%) 1070 POKE 31783%,X% OR 128% 1080 ON X%-48% GOTO 120,240,420,490,600,690,800 1090 REM SK[RMDUMP 1091 REM I%>B\RJAN P] VARJE 8-BLOCK-RAD 1100 I1%=0% : I2%=0% : REM ANTAL RADER FR]N B\RJAN OCH SLUTET P] VARJE 8-BLOCK 1110 IF LEN(Y$)<>0% GOTO 1130 1120 ; CUR(23%,0%)'Namn printerfil? '; : INPUTLINE Y$ : Y$=LEFT$(Y$,LEN(Y$)-2%) 1130 OPEN Y$ ASFILE 1% : GOTO 1140 1140 FOR I%=0% TO 80% STEP 40% 1150 FOR J=31744%+I%+I1%*128% TO 32640%+I%-I2%*128% STEP 128% 1160 FOR K%=0% TO 39% 1170 ; #1,CHR$(PEEK(J+K%)); 1180 NEXT K% 1190 ; #1% 1200 NEXT J 1210 I2%=1% : REM SISTA RADEN SKRIVS INTE UT 1220 NEXT I% 1230 CLOSE 1% 1240 RETURN