Hallo ihr. Könnte sich jemand mal bitte den Code im angehängten zip-File anschauen? Es geht vor allem um die folgende Routine (befindet sich in !zone Graphics):
- ClearScreen ldx #24
- clr_loop_outer ldy #39
- lda ScrTabLo,x
- sta $fb
- clr_loop_inner lda ScrTabHi,x
- sta $fc
- lda #42
- sta ($fb),y
- lda ColorTabHi,x
- sta $fc
- lda #8
- sta ($fb),y
- dey
- bpl clr_loop_inner
- dex
- bpl clr_loop_outer
- rts
- ...
- ...
- ScrTabLo !byte $00,$28,$50,$78,$a0,$c8,$f0,$18,$40,$68,$90,$b8
- !byte $e0,$08,$30,$58,$80,$a8,$d0,$f8,$20,$48,$70,$98,$c0
- ScrTabHi !byte $04,$04,$04,$04,$04,$04,$04,$05,$05,$05,$05,$05
- !byte $05,$06,$06,$06,$06,$06,$06,$06,$07,$07,$07,$07,$07
- ColorTabHi !byte $d8,$d8,$d8,$d8,$d8,$d8,$d8,$d9,$d9,$d9,$d9,$d9
- !byte $d9,$da,$da,$da,$da,$da,$da,$da,$db,$db,$db,$db,$db
In dieser kleistere ich den Bildschirm voll mit dem Char No #42 (Multicolor 1, alle Pixel gesetzt). Relativ am Anfang des Programms rufe ich diese auf, und es funktioniert auch. Ich sehe auch nicht, was daran falsch sein soll. Wenn ich im Programm aber die 6x6-Button-Größe wähle, wird in der obersten Zeile des Bildschirms gemalt (weiße Linie), und das macht er bei einem erneuten Wechsel (z.B. auf 4x4) nicht weg. Naja, jedenfalls teilweise nicht. Manchmal schafft er es bis zur Hälfte der Linie und lässt es dann.
Wegen dieses Verhaltens muss das irgendwas mit dem installierten Raster-IRQ zu tun haben, aber ich verstehe nicht, was. Der feuert schließlich erst acht Zeilen später. Mit folgendem Code, der einfach nochmal die oberste Zeile überpinselt und den ich oben direkt vor rts schreibe, kann ich das Problem beheben, aber ich verstehe nicht, wieso:
Kommt jemand von euch dahinter?