IRQ und CB2-Sound
Suche
Index
FAQ
Kontakt
Zurück
;CB2-Tracker im IRQ fuer CBM 8000
*=$9000       ;Routine liegt im ZusatzRAM ab $9000
lodat=$55
hidat=$56
loirq=$90
hiirq=$91
irq=$e455
loton=$e848
hiton=$e849
klang=$e84a
register=$e84b


         ldx #$00            ;LoByte Daten laden
         ldy #$04            ;HiByte Daten laden
         stx $55             ;in LoVektor schreiben
         sty $56             ;in HiVektor schreiben
         lda register        ;Inhalt des Kontrollregisters laden
         ora #%11101111      ;Schieberegister einschalten
         sta register        ;und zurueckschreiben
         ldx <neuirq         ;LoByte neuirq laden
         ldy >neuirq         ;HiByte neuirq laden
         sei                 ;IRQ verbieten
         stx $90             ;in LoIRQ schreiben
         sty $91             ;in HiIRQ schreiben
         cli                 ;IRQ zulassen
         rts
;-------------------------------------------------------------------------------
neuirq   ldy #$00            ;"Zaehler" initialisieren
         lda ($55),y         ;Byte fuer HiTon laden
         cmp #$ff            ;mit Flag fuer "konstante Werte" vergleichen
         beq weiter3         ;
         sta hiton           ;HiByte der Frequenz schreiben
         inc $55             ;LoByte Daten erhoehen
         bne weiter1         ;auf Blockgrenze testen
         inc $56             ;HiByte Daten erhoehen
weiter1  lda ($55),y         ;Byte fuer LoTon laden
         sta loton           ;LoByte der Frequenz schreiben
         inc $55             ;LoByte Daten erhoehen
         bne weiter2         ;auf Blockgrenze testen
         inc $56             ;HiByte Daten erhoehen
weiter2  lda ($55),y         ;Bitmuster des Klangs laden
         cmp #$ff            ;mit Flag fuer "Ende" vergleichen
         beq ende            ;
         sta klang           ;und in Schieberegister schreiben
weiter3  inc $55             ;LoByte Daten erhoehen
         bne weiter4         ;auf Blockgrenze testen
         inc $56             ;HiByte Daten erhoehen
weiter4  jmp irq             ;zur normalen IRQ-Routine springen
;-------------------------------------------------------------------------------
ende     ldx #$55            ;LoByte der IRQ-Routine laden
         ldy #$e4            ;HiByte der IRQ-Routine laden
         sei                 ;Interrupt verbieten
         stx $90             ;LoByte des Vektors schreiben
         sty $91             ;HiByte des Vektors schreiben
         lda register        ;Inhalt des Kontrollregisters laden
         and #%00010000      ;Schieberegister ausschalten
         sta register        ;und zurueckschreiben
         cli                 ;Interrupt zulassen
         jmp irq             ;zur normalen IRQ-Routine springen

 

Letzte Änderung: 2019-01-04 09:53:30
  Rubrik:  CBM PET
Rubriken-Übersicht
 7 Besucher online 

Valid XHTML 1.0 Transitional Valid CSS!