Assembler-Beispiel 8E - STX $hhll.asm

Aus C64-Wiki
Zur Navigation springenZur Suche springen
; Diese Programm spielt solange einen Ton, bis eine Taste gedrückt wird.
; Programmstart mit SYS 49152

*=$c000   ; Startadresse des Programms
   
GETIN          = $ffe4  
                          ; SID-Register: (Stimme 1)
ST1_FREQ_L     = $d400    ; Frequenz (High- und Low-Byte)
ST1_FREQ_H     = $d401
ST1_WELLENFORM = $d404    ; Wellenform
ST1_ANSCHLAG   = $d405    ; Anschlag ($0. hart   - $f. weich) ; Abschwellen ($.0 hart    - $.f weich)
ST1_HALTEN     = $d406    ; Halten   ($0. stumm  - $f. laut)  ; Ausklingen  ($.0 schnell - $.f langsam)
LAUTST         = $d418    ; Bit 0-3 = Lautstärke ($00 stumm ... $0f laut)

DREIECK        = $11
SAEGEZAHN      = $21
RECHTECK       = $41
RAUSCHEN       = $81

ein      ldx #$0f            ; Tonerzeugung
         stx LAUTST

         ldx #$19
         stx ST1_ANSCHLAG
         ldx #$44
         stx ST1_HALTEN

         ldx #$1d
         stx ST1_FREQ_H
         ldx #$45
         stx ST1_FREQ_L

         ldx #DREIECK
         stx ST1_WELLENFORM

eingabe  jsr GETIN           
         beq eingabe         ; warte auf Tastendruck

aus      ldx #$00            ; Ton abschalten
         stx ST1_WELLENFORM
         stx ST1_ANSCHLAG
         stx ST1_HALTEN
         rts