4
 In onze serie over speciale effecten met de C-16 neemt R.Vogelaar ons deze mee op de muzikale toer. Met de TED chip is de C-16 namelijk zeer geschikt wa t muzikale activiteiten. Deel 3 M et d ez e m ac hi ne k un ne n we op 8 volume-niveauS en tweestemmig on geveer 1020 toonhoogtes produce ren, een voortreffeli jke prestati e. Hier volgt eerst een korte herhaling met w at c ij fe rs en adressen voor de genen, die een vorig artikel, enige nummers geleden, gemist hebben. Het gaat om de adressen van de registers, die met g el ui d t e maken heb ben . dat zij n: $FFOE = 65294 = Lo-byte stem  $FFOF = 65295 = Lo-byte stem 2 $FF1O = 65296 = Hi-byte stem  verander alleen bi en bO $FF1  = 65297 = Controlregister b7,b3 geen fun cti e b6,b5,b4 resp.stem 3, 2,  aan als de bit “1” is b2,bl ,bO volume 0...7 $FF1 2 = 65298 = Hi-byte stem 2  verander alleen bi en bO Stem 3 hee ft dezelf de registers als stem 2. Geluidsprogramma’S Er zijn een p aa r s oo rt e n geluids programma’s, t e w et en : de voorge programmeerde en de vrij program meerbare. Een programma van de eerste soort heeft een ingebouwd melodietje, bij de tweede soort kun je zelf opdrachten verstrekken. Op die tweede s oo rt g aa n w e hier nu nader in. Als je het programma wilt beï nvl oe den, moet je informatie doorgeven. Daar om beki jken we e er st e ve n h o e we dat kunnen doen, met behulp van e en s im pe l BASIC-programmaatje. Tik het volgende maar eens in: 10 PRINT”C-16” 20 GOTO1O We gaan nu kijken hoe de te ve r werken informatie (hier: de tekst “C 16”) in het geheugen staat. Daarvoor h eb be n w e het MONITOR-prograrrr ma. Tik  vanuit de Monitor  in: M 100 0 101 F (retur n). Je krijgt nu een geheugendump van het begin van het BASIC-geheugen te zien. Di e staat afgedrukt in bij gaand kader. keer voor Special effects o p de C-16 Iilluziek maken met BASIC 3.5 is nietmoeilijk. Als we het echter in ma ~VIchinetaal willen doen, komen we diverse moeil ijkheden tegen. Alles moet nu met opdrachten, die rechtstreeks naar de geluids-chip overge bracht moeten worden. Deze worden gewoonlijk verricht door de BASIC interpreter. Daarom moeten we iets weten van de geluidsregisters van de c-i 6 en over de manier,waarop Basic programma’s i n h et geheugen staan. Kaderi : BeschrijvIng van de Bytes In het Basic geheugenvan $1000-$3FF8 $1000  le byte = 2e+3e byte 4e+5e byte 6ebyte 7ebyte 8e-liebyte 12e byte= 13e byte $100D’  4e÷1 5ebyte=  6e.~i 7e byte -18e byte  9e÷2oebyte 21 e byte $1015 22e+23e byte $0 0 (altijd 00 ) $OD $1 0 ($1000 = beginadres volgende regel) $OA $0 0 ($000A = dec. tien = regelnummer) $9 9 (codegetal voor PRINT) $22” (codegetal voor ~ $43 $20 $31 $36 (tekst ‘C-l 6’) $2 (codegetal voor ~ $00 (einde Basic regel) $15 $1 0 (beginadres volgende regel) $14 $0 0 ($0014 = dec.20 = regelnummer) $89 (codegetal voor GOTO) $31 $30 (ASCII-waardes voor  en 0) $00 (einde Baslc regel) $00 $00 (einde programma) 3”~

DOC_20150804215519

Embed Size (px)

DESCRIPTION

Special effects op de C-16

Citation preview

  • In onze serie over speciale effecten met de C-16 neemt R.Vogelaar ons dezemee op de muzikale toer. Met de TED chip is de C-16 namelijk zeer geschiktwat muzikale activiteiten.

    Deel 3

    Met deze machine kunnen we op 8volume-niveauS en tweestemmig ongeveer 1020 toonhoogtes produceren, een voortreffelijke prestatie. Hiervolgt eerst een korte herhaling metwat cijfers en adressen voor degenen, die een vorig artikel, enigenummers geleden, gemist hebben.Het gaat om de adressen van deregisters, die met geluid te makenhebben. dat zijn:$FFOE = 65294 = Lo-byte stem 1$FFOF = 65295 = Lo-byte stem 2$FF1O = 65296 = Hi-byte stem 1 -

    verander alleen bi en bO!$FF1 1 = 65297 = Controlregister

    b7,b3 geen functieb6,b5,b4 resp.stem 3, 2, 1

    aan als de bit 1 isb2,bl ,bO volume 0...7

    $FF1 2 = 65298 = Hi-byte stem 2 -verander alleen bi en bO!

    Stem 3 heeft dezelfde registers alsstem 2.GeluidsprogrammaSEr zijn een paar soorten geluidsprogrammas, te weten: de voorgeprogrammeerde en de vrij programmeerbare. Een programma van deeerste soort heeft een ingebouwdmelodietje, bij de tweede soort kun je

    zelf opdrachten verstrekken. Op dietweede soort gaan we hier nu naderin.Als je het programma wilt benvloeden, moet je informatie doorgeven.Daarom bekijken we eerst even hoewe dat kunnen doen, met behulp vaneen simpel BASIC-programmaatje.Tik het volgende maar eens in:10 PRINTC-1620 GOTO1O

    We gaan nu kijken hoe de te verwerken informatie (hier: de tekst C16) in het geheugen staat. Daarvoorhebben we het MONITOR-prograrrrma. Tik - vanuit de Monitor - in:

    M 1000 101F (return).Je krijgt nu een geheugendump vanhet begin van het BASIC-geheugente zien. Die staat afgedrukt in bijgaand kader.

    keervoor

    Special effectsop de C-16Iilluziek maken met BASIC 3.5 is nietmoeilijk. Als we het echter in ma~VIchinetaal willen doen, komen we diverse moeilijkheden tegen. Allesmoet nu met opdrachten, die rechtstreeks naar de geluids-chip overgebracht moeten worden. Deze worden gewoonlijk verricht door de BASICinterpreter. Daarom moeten we iets weten van de geluidsregisters van dec-i 6 en over de manier, waarop Basic programmas in het geheugen staan.

    Kaderi :BeschrijvIng van de Bytes In het Basic geheugen van $1000-$3FF8$1000 ~le byte =2e+3e byte4e+5e byte6ebyte7ebyte8e-liebyte12e byte=13e byte$100D1 4e1 5ebyte=1 6e.~i 7e byte

    -18e byte1 9e2oebyte21e byte$101522e+23e byte

    $00 (altijd 00)$OD $10 ($1000 = beginadres volgende regel)$OA $00 ($000A = dec. tien = regelnummer)$99 (codegetal voor PRINT)$22 (codegetal voor ~)

    $43 $20 $31 $36 (tekst C-l 6)$22 (codegetal voor ~)$00 (einde Basic regel)$15 $10 (beginadres volgende regel)$14 $00 ($0014 = dec.20 = regelnummer)$89 (codegetal voor GOTO)$31 $30 (ASCII-waardes voor 1 en 0)$00 (einde Baslc regel)$00 $00 (einde programma)

    3~

  • Als we nu RUN intypen, wordt elkebyte uit het programma opgehaalddoor de CHARGET-routine, die inkader 2 staat.

    Wie kunnen deze routine natuurlijkook aanroepen om onze muziek-informatie uit het BASIC-programma tehalen. Deze methode is dan ooktoegepast in het grote machinetaalprogramma, dat hierna volgt. De informatie kan de volgende inhoud envorm hebben:- Maatsoort:

    MN = 2-kwartsmaatMS = 3-kwartsmaatML = 4-kwartsmaat

    - Toonlengte: Li ...L8- Pauzes: P1...P8- Oktaaf: 01...04- Noten: ABCDEFG, al dan niet

    met een + voor de cis

    Een voorbeeldWe zijn er nog niet, erst is nueen tamelijk fors stukmachinetaal nodig, dat u moetovertikken. In plaats van eendisassembly is dat in de vormvan een geheugenuitdraai.Na het intypen kan hetgeSAVEd worden met:SMUSIC, 01, 3A00, 3D80(return) (eerst de Monitor aan-roepen).Later kan het geladen worden,vanuit de Monitor, metLMUSIC, 01 (return).Als dat er in zit, kan het met relatiefsimpele middelen, zoals onderstaandBasic programma tot leven wordenKader 2MonitorPC SR AC XR VR SP;0000 00 00 00 00 F8

    0473 E6 3B INC $380475 DO 02 BNE $04790477 E6 3C ING $3C0479 78 SEI047A 8D 3F FF STA $FF3F047D A0 00 LDY #$OO047F Bi 38 LDA ($3B),Y0481 8D 3EFF STA $FF3E0484 58 CLI0485 C9 3A CMP #$3A0487 BO OA 8CS $04930489 GO 20 CMP #$200488 F0 E6 BEQ $0473048D 38 SEC048E E9 30 SBG #$300490 38 SEC0491 E9 DO SBC #$D00493 60 RTS

    gebracht, de SYS(teemcall) zorgtdaar voor. En dan kunt u metSYSsen beginnen!

    5 VOL810 SYS 14848: REM START

    MACHINETAALPROGRAMMA

    (EERST LADEN!)100 SYS14965, MS 03 L2

    ABCDEFG P3 GFEDCBA105 SYS14977, MN 04 Li

    ABCDEFG P3 GFEDCBA

    110 GOSUB 1000115 END1000 SYS15001: 1F PEEK(16381)=Q

    THEN RETURN1005 FORI=1T06:NEXT:GQTO1000Versnellen van het stuk kan door in

    regel 1005 de 6 teverhogen. Als u stem1 wilt starten, moetde SYS naar 14965wijzen, voor stem 2 isdat 14977. Het eigenlijke spelen gebeurtpas na SYS 15001,zie ook het voorbeeld.

    Dan staat hier ooknog een list ing, waarbij tussen de regels100 en 900 een compositie is gestopt, indit geval het Wilhelmus.

    Het Wilhelmus5 VOLG10 V1~14965:V2~14977:E~1~1 C~1638120 Si~S14848180 SYSV1,MS 02 L4 D90 L2 AB 03 0 02 A L4 B L2 RB 03 L4 0 02 B

    L2 AG181 SY5V2~t1S 03 L4 000 L2 AB 04 C 03 A L4 B L2 AB 04 L4 C 03 2

    L2 AD103 008U21880105 Si8V2,L4 A L8 0106 008U21080107 SYSV1,03 L4 DUO L2 ~RB 03 0 03 A L4 2 L2 AB 03 L4 0 02 2 L2

    AD L4 A L8 13188 005UB1080189 SYSV102 L2 2 03 C LO D L4 E L8 D L4 0 02 2 L2 A110 OOSUB1080111 SY$V1,B L4 03 0 02 BAD L8 R112 005U31080114 8~?SV1~L4 01 0 L2 0 FOR L4 2 L8 R L4 f3 F0 L2 EFf3I3 L4 OF L8 f3115 8Y3V2.L4 02 D L2 13 FOR L4 2 L8 A L4 13 F0 L2 EFOI3 L4 OF L8 0120 OOSIJB1000999 END1880 GYSEI IFPEEK(C)~8THENRETURH1005 FRI~1T06:NEXT1810 00T01880

    READY.

    READY.5 V0L818 V1~149G5:V2=14977:E=15O81 :0=1638120 SrS14848188~101 PRINT~102 PRINT~ RUIIITE103 PRINT~ VOOR184 PRINT~185 PRINT~ DE106 PRINT~ MUZIEK107 PRINT~108 PRINT~ OPDRACHTEN109 PRINT~118~999 END1800 SYSE IFPEEK(C)=OTHENRETIJRN1005 FORI=1T06 :NE~3A08 FiO 00 84 EO 9:3 91 EO 08 ~~:i

    Veel succes met componeren!

    R.Vogelaar

    .

    33

  • >3F113 DO FB fl9 0E 8D 00 3F R9 ~ ~3C20 FF 39 01 FF DO 03 19 01 ~>3A18 OF 8D 40 3F ER A9 10 8D ~ >3C28 FF 99 01 FF 20 32 3C 4C ~)3A20 08 3F R9 20 OD 43 3F EO ~ >3C30 7C 3C fl0 05 Bi EO 48 C8 :~t~G:I:ID~3R28 ER EFi ER ER ER ER ER ER ~ ~3C38 Bi EO F0 13 AR 68 48 4A ~II>31930 84 FF 20 73 04 08 194 FF ~ >3C40 C:R DO FC RO 04 91 EO 68 :~j~~I>31938 28 60 ER ER ER ER ER ER ~ >3C48 38 F1 EO 88 91 EO 60 190>31940 ER ER ER ER ER ER ER ER ~ >3C50 04 R9 00 91 EO 8:3 68 91 ~>31948 ER ER ER ER ER ER ER ER i~ >3C58 EO 60 C9 00 DO OD fl0 08 ~>31950 ER ER ER ER ER ER 20 30 ~ >3C60 Bi EO 49 FF 2D 11 FF 8D ~>31958 3R F0 19 C9 22 DO F7 AS ~ )3C68 11 FF 60 fl0 08 Bi EO OD ~>31960 3B RO 01 91 EO CO R5 3C :K~~:~ >3C70 ii FF 8V 11 FF60 fl900 ~WZ~>3A68 91 EO 20 30 3A DO FB C8 :~~~::l >3C78 20 5fl 3C 60 fl9 FF 20 519 ~>3A70 Ff9 01 91 EO 60 fl9 3F 85 ~ >3C80 :3C 60 00 00 00 00 00 00 ~>3R78 El R9 00 85 EO 20 56 319 ~ >3C88 00 00 00 00 00 00 00 00 :~__~__*~>3A80 50 fl9 3F 85 El 199 40 85 ~ >3C90 00 00 00 00 00 00 00 00 :~m)3A88 EO 2056 3A 60 ER EA ER ~ )3C93 00 00 00 00 000000 00 ~)3R90 ER ER ER ER ER ER ER ER _______ >3CA 00 00 00 00 00 00 00 00 ~>3R98 ER 199 3F 85 El R9 00 85 ~ >3CR8 00 00 00 00 00 00 00 00 ~>319190 EO 20 Cl 3fl Fl9 40 85 EO ~;I~ >3CB0 00 00 00 00 00 00 00 00 ~>319198 20 Cl 319 ER ER ER ER ER ~ >3CB8 00 00 00 00 00 00 00 00 ~>3RB0 ER ER 199 00 OD 03 3F OP ~ >3CC0 00 00 00.00 00 00 00 00 ~~3HB8 43 3F 8D FD 3F EO ER ER ~ ~LC3 v~ 00 0fl 00 fl0 ~i0 00 fl0>3R60 ER RO 03 Bi EO DO 01 60 ~ ?3CD0 00 00 00 00 00 00 00 00 :~j~)3RC8 19fl Cfl DO 16 819 91 EO 20 ~ >3CD8 00 00 00 00 00 00 00 00 ~>3flD0 76 3C F10 04 Bi EO DO 04 ~ >3CEO 00 00 00 00 00 00 00 00~>3RD8 20 0C 3B 60 RA fl9 0091 ~ >3CE8 00 00 00 00 00 00 00 00 ~>3flE0 EO 88 819 91 EO 60 ES Pl ~I )3CFO 00 00 00 00 00 00 00 00 ~>3RE8 DO 02 EE B2 60 190 00 ji :~~I >3CF8 00 00 00 00 00 00 00 00 ~>3RF0 Bi DO 01 EO C9 319 F0 FB ~ >3TIOO 30 07 00 76 00 R9 01 06 ~>3FiF8 C9 20 DO F7 20 EE 3A 4C ~ >3D08 01 59 01 7F 01 C5 00 00 ~>3B0O ED 3fl 20 ED 319 P00160 ~ >3D10 08 3F 00 90 00 D8 0130 ~>3B08 20 EE 3R 60 fl0 01 Bi EO ~ >3D18 01 EC 01 192 01 ES 00 00 ~>3B10 85 Bi C8 Bi EO 85 B2 20 :~m~ >3D20 02 04 02 3E 02 54 02 83 ~~lFVi>3Ei8.02 3B F0 2E ER C9 22 F0 ~ )3D23 02 AD 02 CO 02 E:3 00 00 ~>3B2O F6 C9 4C DO 03 4C EO 3E >3D30 02 20 02 48 02 6C 02 98 ____>3B28 C9 4D DO 03 4C 79 3B C9 >3D33 02 P7 02 12 02 F3 00 00 ______>3B30 4F DO 03 4C 9F 3E C9 50 ::i]~~i~ >3D40 03 02 03 1E 03 2fl 03 42 ~>3B38 DO 03 4C CO 3E 38 C9 48 ~I~Nl >3D48 03 56 03 EO 03 71 00 00 ~>3B4O DO 14 38 E9 41 30 OF 20 ~ >3D50 03 10 03 24 03 36 03 4C ~>3B48 DF 3E fl0 01 AS Bi 91 EO ~ >3D58 03 5B 03 69 03 79 00 00 ~>3B50 C8 195 B2 91 EO 60 Ff9 21 )3D60 03 81 03 8F 03 95 03 Al ~>3B58 ER ER 20 EE 3Fl 4C 17 3E ~ >3D68 03 AB 03 EO 03 B9 00 00 :~J~>3B60 20 02 3D rio oi 60 BO 0:3 >3D7O 03 83 03 92 03 9E 03 fl6>3B68 4C 56 3B E9 30 90 E7 0fl >3D73 03 19E 03 P503 BC 00 00 ~>3B70 019 019 190 05 91 EO 4C 17 ~>3E78 3B 20 02 3B DO 01 60 C9 ~>3B30 4E DO 04 199 02 DO ii C9 :>3B88 53 DO 04 199 03 DO 09 C9>3B90 4C F0 03 4C 56 3E 199 00>3B98 fl0 OS 91 EO 4C 17 3B 20 ~ ___________________>3BAO ED ;3A DO 01 EO 38 E9 31 ~>3BAO 90 04 C9 05 90 03 4C 56 ~ Abonnement>3BBO :3B 20 ES 3fl 0fl 0fl OR 0fl ~ -)3BB8 0fl 190 07 91 EO 4C 17 3~ ~ op dit blad?>3EC0 20 02 3B rio ei so 38 E9 ~>.3BC8 30 90 04 C9 08 90 03 4C ~ B~I rir~t>3EDO 56 3E 20 EE 3fl 0fl 319 019 ~ .>3EP8 fl0 03 91 EO 4C 4fl 3B 019 ~ 060224222)3BE0 19fl 20 ED :319 DO 01 60 C:9 ~>3BE8 2B DO 08 20 EE 319 819 18 ~>3BF 69 10 1919 190 07 8fl 18 71 :~~r) eeservice.>3EF8 EO AR 190 00 El EO 198 BP ~ elke dag tot 20.30 uur>3COO 01 3D 99 00 FF ER ER fl1 ~)3C08 00 3V CO OF F0 03 C8 I::3>3C10 c:8 43 P9 01 FF 29 FC 99>3C18 01 FF 68 C9 00 DO 07 49 :

    34