Hi zusammen ,
ich hab grad die ersten 3 Teile des Irq-Tuts von Herzog gemacht und dachte mir ich ich prog ne Rasterbar wie sie in den meisten Demos benutzt wird.
Bestehen soll die Bar aus 4 verschieden breiten und verschieden farbigen Lines, dazu benutze ich zwei Tabellen !
Ich hab 2 Irq's laufen weil ich noch einiges rumprobieren will !
Das Prob. ist nur dass ich nur eine Linie gezeichnet bekomme ;(.
Ich find einfach den Fehler nicht. Hoffentlich könnt ihr mir helfen !?
Hier mal mein Code :
Code
- !to "rasterintrand-5.prg",cbm
- *= $0800
- !byte $00,$0c,$08,$0a,$00,$9e,$32,$31,$32,$38,$00,$00,$00,$00
- *=$0850
- sei ;irq's sperren
- lda #$7f ;CIA irq's löschen und unterbinden
- sta $dc0d ;CIA irq's löschen und unterbinden
- lda $dc0d ;CIA irq's löschen und unterbinden
- lda #$00 ;Rasterzeile 0 (ganz oben)
- sta $d012 ;als Rasterauslöser festlegen
- lda $d011 ;Rasterzeilen zwischen 0 und 255 sind
- and #$7f ;Rasterauslöser, deshalb Bit 7 löschen
- sta $d011 ;und zurückschreiben
- lda #$01 ;Rasterstrahl als Unterbrechungsquelle festlegen
- sta $d01a ;im Irqenable Register
- ldx #<Irq1 ;Interrupt auf
- ldy #>Irq1 ;erste eigene
- stx $0314 ;routine
- sty $0315 ;verbiegen
- cli ;Clear Interrupt
- rti ;Return from Interrupt
- Irq1 ldx #$04
- .loop1 lda breite,x
- sta $d012
- dec $d019
- lda color,x
- sta $d020
- sta $d021
- dex
- bne .loop1
- ldx #<Irq2
- ldy #>Irq2
- stx $0314
- sty $0315
- jmp $febc ;Exit Interrupt
- Irq2 lda #$00 ;Rasterzeile 0 als Auslöser
- sta $d012 ;des Rasterinterrupts festlegen
- dec $d019 ;Interrupt Request Register IRR löschen
- ldx #<Irq1 ;Zeiger auf erste Routine verbiegen
- ldy #>Irq1 ;Zeiger auf erste Routine verbiegen
- stx $0314 ;Zeiger auf erste Routine verbiegen
- sty $0315 ;Zeiger auf erste Routine verbiegen
- lda #$00 ;Farbe schwarz setzen
- sta $d020 ;Rahmen
- sta $d021 ;Screen
- jmp $ea31 ;Spung in Serviceroutine
- breite
- !byte $12,$14,$17,$19
- color
- !byte $0b,$0c,$0f,$07
Vielen Dank für eure Mühe schon mal vorab ...
Spindizzy