Assembler Code: Rechner hängt sich im IRQ auf.... ERLEDIGT
von Bernd » So 30. Mai 2010, 00:09Hallo zusammen,
ich habe beim Assembler-Proggen ein seltsames Verhalten festgestellt. Starte ich mein Programm, so hängt sich der Rechner sporadisch auf.....
Ursache ist ein Display List Interupt, der im Menü etwas Farbe einspielt. Schalte ich diese nicht ein, läuft alles.
So sieht das Programm aus....
______________________
IRQ PHA
----TYA
----PHA
----LDY Merker
----LDA Farbe,Y -> Farben für die einzelnen Abschnitte
----INY
----CPY #7 -> 7te mal die DLI aufgerufen?
----BCC NULL
----LDY #0 -> Dann den Merker auf "0" setzen....
NULL STY Merker
----STA $D018
----STA $D40A
----PLA
----TAY
----PLA
----RTI
_________________________
Sporadisch kommt es vor dass die Farben durcheinander laufen....Also noch ein Vertical Blank Interrupt
der im Rücklauf den Merker auf "0" setzt.
VBV LDA#0
------STA Merker - Merker wird auf 0 im Bildrücklauf gesetzt...
------JMP $E45F
________________________________
Das Hauptprogramm
LDY # <VBV
LDX # >VBV
LDA #6
JSR $E45C -> Setzt den VBI
POKE $D40E,$0
SEI
POKE $0200, <IRQ
POKE $0201, >IRQ
POKE $0230, <DLIST
POKE $0231, >DLIST
CLI
POKE $D40E,$C0 -> Ende, da hängt es sich auf, auf dem Bildschirm sehe ich nur noch
farbige Streifen...
Poke ist ein Macro!!! Nix anderes als LDA # <IRQ und STA $200. Hat vielleicht einer eine Idee????
Muss ich zwischen der DLIST Änderung und dem Aktivieren eine Zeitschleife setzen??
Die Display List linklusive der Daten sind im gültigen Range Bereich.
Bernd
ich habe beim Assembler-Proggen ein seltsames Verhalten festgestellt. Starte ich mein Programm, so hängt sich der Rechner sporadisch auf.....
Ursache ist ein Display List Interupt, der im Menü etwas Farbe einspielt. Schalte ich diese nicht ein, läuft alles.
So sieht das Programm aus....
______________________
IRQ PHA
----TYA
----PHA
----LDY Merker
----LDA Farbe,Y -> Farben für die einzelnen Abschnitte
----INY
----CPY #7 -> 7te mal die DLI aufgerufen?
----BCC NULL
----LDY #0 -> Dann den Merker auf "0" setzen....
NULL STY Merker
----STA $D018
----STA $D40A
----PLA
----TAY
----PLA
----RTI
_________________________
Sporadisch kommt es vor dass die Farben durcheinander laufen....Also noch ein Vertical Blank Interrupt
der im Rücklauf den Merker auf "0" setzt.
VBV LDA#0
------STA Merker - Merker wird auf 0 im Bildrücklauf gesetzt...
------JMP $E45F
________________________________
Das Hauptprogramm
LDY # <VBV
LDX # >VBV
LDA #6
JSR $E45C -> Setzt den VBI
POKE $D40E,$0
SEI
POKE $0200, <IRQ
POKE $0201, >IRQ
POKE $0230, <DLIST
POKE $0231, >DLIST
CLI
POKE $D40E,$C0 -> Ende, da hängt es sich auf, auf dem Bildschirm sehe ich nur noch
farbige Streifen...
Poke ist ein Macro!!! Nix anderes als LDA # <IRQ und STA $200. Hat vielleicht einer eine Idee????
Muss ich zwischen der DLIST Änderung und dem Aktivieren eine Zeitschleife setzen??
Die Display List linklusive der Daten sind im gültigen Range Bereich.
Bernd