Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ;Flanger
- opt cex,mex
- bufferN equ 4096
- delaytime equ 220
- depth equ 7 ;potega do, które
- modspeed equ 40
- mix equ 0.5
- org P:$100
- init
- ;M0 - rejestr modulo dla probek sygnalu wejsciowego
- ;R0 - rejestr adresowy
- ;M1 - rejestr modulo dla probek dileja
- ;R1 - rejestr adresowy
- ;M4 - rejestr modulo dla probek sygnalu modulujacego
- ;R4 - rejestr adresowy
- ;N4 - rejestr przesuniecia
- move #(bufferN-1),m0
- move #(bufferN-1),m1
- move #$0,r1 ;stad czytamy
- move #delaytime,r0 ;tu piszemy
- move #$FF,m4
- move #$13F00,r4
- move #modspeed,r5
- move #-1,m5
- repeat ;glowna petla programu
- in a
- move a,x:(r0)+ ;z a do pamieci
- move #1-mix,x1
- move a,y1
- mpy y1,x1,a ; w akumulatorze jest aktualna probka przeskalowana
- move y:(r5)-,b
- ; NIE WSTAWIAJ NIC MIEDZY TYMI INSRUKCJAMI, bo zniszczysz świat
- .IF <EQ>
- move #modspeed,r5
- move y:(r4)+,b
- .ENDI
- move y:(r4),b ;wczytujemy do y1 probke sinusa
- asr #24-depth,b,b ;teraz mamy calkowitaliczbowa wartosc sinusa w B. NIE KASUJ TEJ LINIJKI NAWET JAK NIE OGARNIASZ
- add #delaytime,b
- neg b
- move r0,x1 ; wczytuje do x adres aktualnie przetwarzanej probki
- add x1,b ; teraz mamy aktualny dilej w B :D
- ; NIE WSTAWIAJ NIC MIEDZY TYMI INSRUKCJAMI, bo zniszczysz świat
- .IF <MI>
- add #bufferN,b
- .ENDI
- move b,r1
- ; wczytaj próbkę i pomnóż ją przez wsp. mix
- move x:(r1)+,x1 ; poprosze kanapke
- move #mix,y1
- mac x1,y1,a
- out a
- forever
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement