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 >
Commodore BASIC  |  2022-10-26  |  2KB  |  51 lines

  1. 10 sys9*4096:.opt oo:        ; assembler starten
  2. 19 :
  3. 20 init lda #<nmi1:sta $318  ; nmi-vektor
  4. 22 :    lda #>nmi1:sta $319  ; auf routine stellen.
  5. 24 :    lda #150:sta $dd04   ; timer-speed-lo auf 150.
  6. 30 :    lda #0:sta $dd05     ; timer-speed-hi auf 0.
  7. 32 :    lda #$81:sta $dd0d   ; nmi vom cia-timer ausloesen.
  8. 34 :    lda #1:sta $dd0e:rts ; cia-timer auf wiederholung & ende.
  9. 40 :
  10. 42 nmi1 sta $9b:sty $9e      ; register retten.
  11. 44 :    ldy #0:lda ($f7),y   ; samples von stimme 1
  12. 46 :    clc:adc ($fb),y      ; mit samples von stimme 2 addieren,
  13. 48 :    sta $9f:and #15      ; merken, erstes sample isolieren,
  14. 50 :    ora $fe:sta $d418    ; filter dazu und ausgeben.
  15. 52 :    lda $fa:cmp $f8      ; endadresse stimme 1 erreicht "?"
  16. 54 :    beq n1b:inc $f7      ; nein, dann adresse byteweise
  17. 56 :    bne n1b:inc $f8      ; erhoehen.
  18. 58 n1b  lda #<nmi2:sta $318  ; nmi auf zweite routine.
  19. 60 :    lda $dd0d            ; nmi-flag loeschen.
  20. 62 :    ldy $9e:lda $9b:rti  ; register zurueckholen & ende.
  21. 64 :
  22. 66 nmi2 sta $9b:lda $9f      ; register retten & samples holen.
  23. 68 :    lsr:lsr:lsr:lsr      ; zweites sample nehmen,
  24. 70 :    ora $fe:sta $d418    ; filter dazu und ausgeben.
  25. 72 :    lda #<nmi1:sta $318  ; nmi auf erste routine.
  26. 74 :    lda $fd:cmp $fc      ; endadresse stimme 2 erreicht "?"
  27. 76 :    beq n2b:inc $fb      ; nein, dann adresse byteweise
  28. 77 :    bne n2b:inc $fc      ; erhoehen.
  29. 78 n2b  lda $dd0d            ; nmi-flag loeschen.
  30. 79 :    lda $9b:rti          ; register zurueckholen & ende !
  31. 80 :
  32. 81 ;***********************************
  33. 82 ;
  34. 83 ; stimme #1
  35. 84 ; ---------
  36. 85 ;
  37. 86 ; startadresse in $f7/$f8
  38. 87 ; endadr.(hi)  in $fa
  39. 88 ;
  40. 89 ; stimme #2
  41. 90 ; ---------
  42. 91 ;
  43. 92 ; startadresse in $fb/$fc
  44. 93 ; endadr.(hi)  in $fd
  45. 94 ;
  46. 95 ; filter       in $fe
  47. 96 ;
  48. 97 ; als letztes byte (s.text) muss
  49. 98 ; jetzt 68 ($44) gepoked werden !!
  50. 99 ; (da ein sample nur noch werte von 0-7 hat !)
  51.