;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