home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
64'er 1993 September
/
64er_Magazin_93-09_1993_Markt__Technik_de_Side_B.d64
/
2-voice-player
(
.txt
)
< prev
next >
Wrap
Commodore BASIC
|
2022-10-26
|
2KB
|
51 lines
10 sys9*4096:.opt oo: ; assembler starten
19 :
20 init lda #<nmi1:sta $318 ; nmi-vektor
22 : lda #>nmi1:sta $319 ; auf routine stellen.
24 : lda #150:sta $dd04 ; timer-speed-lo auf 150.
30 : lda #0:sta $dd05 ; timer-speed-hi auf 0.
32 : lda #$81:sta $dd0d ; nmi vom cia-timer ausloesen.
34 : lda #1:sta $dd0e:rts ; cia-timer auf wiederholung & ende.
40 :
42 nmi1 sta $9b:sty $9e ; register retten.
44 : ldy #0:lda ($f7),y ; samples von stimme 1
46 : clc:adc ($fb),y ; mit samples von stimme 2 addieren,
48 : sta $9f:and #15 ; merken, erstes sample isolieren,
50 : ora $fe:sta $d418 ; filter dazu und ausgeben.
52 : lda $fa:cmp $f8 ; endadresse stimme 1 erreicht "?"
54 : beq n1b:inc $f7 ; nein, dann adresse byteweise
56 : bne n1b:inc $f8 ; erhoehen.
58 n1b lda #<nmi2:sta $318 ; nmi auf zweite routine.
60 : lda $dd0d ; nmi-flag loeschen.
62 : ldy $9e:lda $9b:rti ; register zurueckholen & ende.
64 :
66 nmi2 sta $9b:lda $9f ; register retten & samples holen.
68 : lsr:lsr:lsr:lsr ; zweites sample nehmen,
70 : ora $fe:sta $d418 ; filter dazu und ausgeben.
72 : lda #<nmi1:sta $318 ; nmi auf erste routine.
74 : lda $fd:cmp $fc ; endadresse stimme 2 erreicht "?"
76 : beq n2b:inc $fb ; nein, dann adresse byteweise
77 : bne n2b:inc $fc ; erhoehen.
78 n2b lda $dd0d ; nmi-flag loeschen.
79 : lda $9b:rti ; register zurueckholen & ende !
80 :
81 ;***********************************
82 ;
83 ; stimme #1
84 ; ---------
85 ;
86 ; startadresse in $f7/$f8
87 ; endadr.(hi) in $fa
88 ;
89 ; stimme #2
90 ; ---------
91 ;
92 ; startadresse in $fb/$fc
93 ; endadr.(hi) in $fd
94 ;
95 ; filter in $fe
96 ;
97 ; als letztes byte (s.text) muss
98 ; jetzt 68 ($44) gepoked werden !!
99 ; (da ein sample nur noch werte von 0-7 hat !)